python异常小结

异常,exception,其实就是python的一个对象。每个异常都是某个异常类(如ZeroZeroDivisionError)的一个实例。

引发异常

异常可以是自动触发(违反某些规则,如除零),也可以是手动触发。使用raise语句,就可以引发指定的异常。

>>> raise Exception('This is an exception")
Traceback (most recent call last):
        File "<stdin>", line 1, in ?
        Exception: This is an exception

raise后面接Exception类(或其他异常类),括号里是异常信息。每次执行raise语句,都会自动创建一个异常类实例。
以下为几种python内置的异常类


常用异常类

异常捕获和处理

可以使用try/except语句对异常进行捕获然后进行相关处理。else语句处理没有发生异常的情况。

>>>try:
       print(x / y)
   except ZeroDivisionError:
       print("y can't be zero')
   else
       print("OK")

异常从函数向外传播到调用函数的地方。如果在这里也没有被捕获,异常将向程序的最顶层传播.
同时捕获多个异常可以用多个except语句,也可以用一个except,括号里写入若干种异常。如果想要捕获所有异常,直接用except语句,后面不接任何异常。
有时候,可使用条件语句来达成异常处理实现的目标,但这样编写出来的代码可能不那么自然,可读性也没那么高。另一方面,有些任务使用if/else完成时看似很自然,但实际上使用try/except来完成要好得多。因此,应该尽量养成写try/except的习惯。

自定义异常

除了第一节列出的几种python内置的异常类,也可以自定义异常类,用于专门处理某一类异常。

>>>class MyException(Exception):
         pass

警告

如果只是想发出警告,指出出现了一些情况,不想中止程序,可以使用warning。

>>> from warnings import warn
>>> warn('Maybe you should stop here')
__main__:1: UserWarning: Maybe you should stop here

还可使用模块warnings中的函数filterwarnings来抑制你发出的警告(或特定类型的警告),并指定要采取的措施,如"error"或"ignore"。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容