课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
异常处理是程序员在软件编程开发过程中需要掌握的一项技能,而今天我们就通过案例分析来了解一下,python编程开发语言的异常处理应该怎么操作。
为什么要异常处理
常见的程序bug无非就两大类:
语法错误;
逻辑不严谨或者思维混乱导致的逻辑错误;
显然二种错误更难被发现,且后果往往更严重。无论哪一种bug,有两种后果等着我们:一、程序崩掉;二、执行结果不符合预期;
对于一些重要关键的执行操作,异常处理可以控制程序在可控的范围执行,当然前提是正确的处理。
比如我们给三方提供的API或者使用三方提供的API。多数情况下要正确的处理调用者错误的调用参数和返回异常结果的情况,不然就可能要背黑锅了。
在不可控的环境中运行程序,异常处理是必须的。然而困难的地方是当异常发生时,如何进行处理。
异常匹配原则
所有except子句按顺序一一匹配,匹配成功则忽略后续的except子句;
若抛出异常对象为except子句中给出的异常类型的对象或给出的异常类型的派生类对象,则匹配成功;
如果所有的except子句均匹配失败,异常会向上传递;
如果依然没有被任何try...except捕获到,程序在终止前会调用sys.excepthook进行处理;
python异常处理:
使用对象来表示异常错误信息,每种异常均有一种对应的类,BaseException为所有表示异常处理类的基类。
程序执行过程中抛出的异常会匹配该对象对应的异常类和其所有的基类。
可以从内置类型的异常类派生出自定义的异常类。
被捕获的异常可以再次被抛出。
可以的话尽量使用内置的替代方案,如ifgetattr(obj,attr_name,None),或者with结构等。
sys.exc_info()保存当前栈帧或者之前的栈帧中获取被try,except捕获的异常信息。
未处理的异常导致程序终止前会被sys.excpethook处理,可以自定义定义sys.excpethook。
异常的陷阱:
正确的异常处理能让代码有更好的鲁棒性,但是错误的使用异常会过犹不及。
捕获异常却忽略掉或者错误的处理是不可取的。滥用异常处理不仅达不到提高系统稳定性的效果,还会隐藏掉引起错误的诱因,导致排查问题的难度增加。
因此比如何捕获异常更重要的是,异常发生时应当如何处理。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!