Python10

异常

异常可以通过try语句来检测,在try块里的代码都会被检测有无异常发生。try有两种主要形式:try-except 和try-finally,这两个相互排斥,只能选择其中一个。

try-except
try:
    code #待监控代码
except Exception1[,reason1]:
    except_code1 #异常处理代码
except Exception2[,reason2]:
    except_code2 #异常处理代码
...

例:

>>> try:
...     handler=open('tmp','r')
... except IOError as e:
...     print(e)
...     print(e.__class__)
...     print(e.__class__.__doc__)
...     print(e.__class__.__name__)     
...
[Errno 2] No such file or directory: 'tmp'
<class 'FileNotFoundError'>
File not found.
FileNotFoundError
else & finally

在else范围中的任何代码运行前,try范围中的所有代码必须完全成功,而finally则是无论异常是否发生,是否捕获都会执行。

>>> try:
...     handle=open('tmp.info','r+')
... except:
...     print('open error')
... else:
...     print('open finish')
...     handle.close()
... finally:
...     print('finally')
...
open error
finally
assert

断言成功不采取任何措施,否则出发AssertionError异常,与c中assert类似。

assert expression[,arguments]

例:

>>> assert 1==0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>> assert 1==0,'One is not equal Zero'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: One is not equal Zero
>>> try:
...     assert 1==2,'One is not equal Two'
... except AssertionError as e:
...     print('%s:%s' %(e.__class__.__name__,e))
...
AssertionError:One is not equal Two
标准异常
名 称描 述
BaseException所有异常的基类
SystemExitpython解释器请求退出
KeyboardInterrupt用户中断执行
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF标记
EnvirionmentError操作系统错误基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsErrorwindows系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有次索引
KeyError映射中没有这个键
MemoryError内存溢出错误
NameError为声明/初始化对象
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用驶入访问已经垃圾回收的对象
RuntimeError一般运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython语法错误
IndentationError缩进错误
TabErrorTab和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode相关错误
UnicodeDecodeErrorunicode解码错误
UnicodeEncodeErrorunicode编码错误
UnicodeTranslateErrorunicode转换错误
Warning警告基类
DeprecationWarning关于被弃用的特征警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型的警告
PengingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning运行时警告
SyntaxWarning可疑语法警告
UserWarning用户代码生成警告
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值