异常处理机制
try...except...
try后面放可能出错的语句,except后面放错误的处理办法
try...except...finally...
无论异常是否发生,finally语句都会执行
try...except...else...finally...
如果错误不发生则执行else中的内容,并且继续向下执行
raise语句指定一个异常
def is_work_done():
a=3/1
return a
try:
is_work_done()
raise NameError("HELLO")
except:
print("hello")
raise #raise的唯一参数是异常的类或者实例(也就是exception的子类)
如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。
自定义异常
class MyError(Exception):
def __init__(self,value):
super().__init__()
self.value=value
try:
raise MyError(9)
except MyError as e:
print(e.value)
注意事项
- 只处理你知道的异常,避免捕获所有异常然后吞掉它们。
- 抛出的异常应该说明原因
- 如果有需要,切记使用
finally
来释放资源 - 如果有需要,请不要忘记在处理异常后做清理工作或者回滚操作