python-异常处理
异常
写代码时解释器会提示我们语法错误,但是即便在语法正确时,我们往往也会遇到很多错误。我们把执行时检测到的错误称为异常。
python 中所有的异常都派生于 BaseException
,然后有个类 Exception
继承该类,Exception
下有很多经常被引发的异常,比如 ImportError, IndexError
等,我们自定义的异常也要继承于 Exception
[^1]
异常处理
python 的异常处理语句为:
try:
pass
except Error1:
# Error1 发生时
except Error2 as e:
# Error2 发生时
else:
# (option) try 子句没有引发异常时执行
finally:
pass
工作的逻辑是这样的 [^2]:
- 执行
try
语句 - 如果发生异常则进入该异常对应的
except
但是需要注意:
- 如果有多个
except
,只会执行第一个,比如如果同时发生了Error1
和Error2
,就不会再进入。 except
后可以用as
将变量绑定到异常的实例上。- 如果
except
后没有指定异常类型,则捕捉所有的异常 - 如果发生的异常与
except
的异常不匹配,则它会被传递到外部的try
语句中 - 如果没有找到异常处理程序,则它是一个未处理异常,且执行将终止并输出如上所示的消息。
自定义异常
自定义异常需要继承 Exception
类,抛出异常我们可以使用 raise
class MyError(Exception):
def __init__(self, message):
super().__init__()
self.message = message
def __str__(self) -> str:
return self.message
try:
raise MyError("test")
except MyError as e:
print(e, "success")
# output: test success
异常信息
我们想做到 python 自带的异常那样的提示信息,可以用到一个模块 traceback
,以后用到的时候再看看文档吧
相关阅读
References
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruoy's Blog!
评论