python异常小结

2019-02-09  本文已影响0人  nowherespyfly

异常,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"。

上一篇 下一篇

猜你喜欢

热点阅读