美文网首页
异常捕获

异常捕获

作者: 泡菜鸡丁 | 来源:发表于2019-11-27 12:19 被阅读0次

    ①try...except语句来处理异常

    except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的异常/错误。没有给出错误或者异常的名称,则处理所有的错误和异常。

    如果某个错误或异常没有被处理,默认的python处理器就会被调用。它会终止程序的运行,并且打印一个消息。

    还可以关联上一个else从句,当没有异常发生的时候执行。

    常见异常(可避免的):

    使用不存在的字典关键字,将引发KeyError异常

    搜索列表中不存在的值,将引发ValueError异常

    调用不存在的方法,将引发AttributeError异常

    引用不存在的变量,将引发NameError异常

    未强制转换就混用数据类型,将引发TypeError异常

    导入一个不存在的模块将引发一个ImportError异常

    ②try....fianlly

    加入希望在无论异常发生与否都执行一段代码,可以使用finally块来完成。

    注意,在一个try块下,你可以同时使用except从句和finally块。

    如果在finally前面的try或者except,else等里面含有return语句,会先跳过finally再执行return

    ③raise语句

    可以使用raise语句引发异常(抛出异常)。你还得指明错误/异常的名称和伴随异常触发的异常对象。

    可以引发error或者exception类的直接或者间接导出类。

    py2                py3

    raise MyException    MyException

    raise MyException,'error message'  raise MyException('error message')

    raise MyException,'error message',a_traceback    raise MyException('error message'):with_traceback(a)

    说明:

    ⒈抛出不带自定义错误信息的异常,这种最简单的形式下,语法没有改变

    ⒉抛出带自定义错误信息的异常时:py2用一个逗号来分隔类和错误信息,py3把错误信息作为参数传递给异常类

    ⒊抛出一个带用户自定义回溯(stack trace,堆栈追踪)的异常,py2和py3完全不同

    ⒋在py2里,可以仅仅抛出一个异常信息,在py3里,这种形式不再被支持。2to3将会警告你它不能自动修复这种语法。

    相关文章

      网友评论

          本文标题:异常捕获

          本文链接:https://www.haomeiwen.com/subject/rwkpwctx.html