python中的异常处理机制

异常:程序运行过程中由外部问题(硬件错误,输入错误)引起的异常事件。

语法:

try:
    <语句>        
except <名字>:#异常1名字
    <语句>         #发生异常后执行的语句
else:

    <语句>        #没有发生异常时执行的语句

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

示例:

打开一个不存在的文件,会报fileNotFoundError


用try语句捕获这个异常,


else语句是在没有异常的情况下执行的


拓展:

FileNotFoundError本质是一个异常类。

所有的异常,本质都是一个类。

异常类的树形表如下:


解读一下就是,FileNotFoundError的父类是OSError,OSError的父类是Exception类(大多数异常类的父类都是Exception),而终极boss是BaseException类(再往上就是Object类了)

明白这一点的意义有两个:

第一:当你想捕获一个异常,又不确定会遇到什么异常的时候,可以直接except Exception,因为按照类的继承原则,这条语句可以接收所有以它为父类的异常。

第二:你可以自己写一个异常类了。

 

定制异常了解一下~


定义一个类,继承Exception,它就成了异常类。

调用过程给了一个简单的示范,当文件不存在时,抛出TestException异常,然后在下面捕获,进行相应操作就可以。

#每日鸡汤:任何语言都只是一个工具,一个过程,最后指引你的是一种博大的文化#

猜你喜欢

转载自blog.csdn.net/Daisy_zye/article/details/80488219