美文网首页
异常处理的几点基本原则

异常处理的几点基本原则

作者: 叶田的学习笔记 | 来源:发表于2018-11-04 20:34 被阅读0次

1、注意异常的粒度,不推荐在try中放入过多的代码。

在try中放入过多的代码带来的问题是如果程序抛出异常,将会较难定位,给debug和修复带来不便,因此应尽量只在可能抛出异常的语句块前面放入try语句。

2、谨慎使用单独的except语句处理异常,最好能定位具体的异常。同样也不推荐使用except Exception来捕获异常。

import sys

try:
    print(a)
    b = 0
    print(a/b)
except ZeroDivisionError:
    sys.exit('ZeroDivisionError: Can not division zero')

上面的代码中,如果删掉except后面的ZeroDivisionError,则程序运行后只会打印“ZeroDivisionError: Can not division zero”,而实际情况是a在使用前没有定义,程序引发了NameError。

单独使用except语句会捕获SystemExit,KeyboardInterrupt等在内的各种异常,从而掩盖程序真正发生异常的异常,给debug造成一定的迷惑性。因此需要谨慎使用,最好能在except语句中定位具体的异常。如果在某些情况下不得不使用单独的except语句,最好能够使用raise语句将异常抛出向上层传递。

3、可能包含多个except语句,分别来处理不同的特定的异常。但最多只有一个分支会被执行。所以except语句有排序先后问题。

为了更精确地定位错误发生的原因,推荐的方法是将继承结构中子类异常在前面的except语句中抛出,而父类异常在后面的except语句抛出。
这样做的原因是当try块中有异常发生的时候,解释器根据except声明的顺序进行匹配,在第一个匹配的地方便立即处理该异常。如果将层次高的异常类再前面进行捕获,往往不能精确地定位异常发生的具体位置。
如果异常能够在被捕获的位置被处理,那么应该及时处理,不能处理也应该以合适的方式向上层抛出。遇到异常不论好歹就向上层抛出是非常不明智的。向上层传递的时候需要警惕异常被丢失的情况,可以使用不带参数的raise来传递。

4、使用更为友好的异常信息。软件最终是为用户服务,当异常发生的时候,异常信息清晰友好与否直接关系到用户体验。

相关文章

  • 异常处理的几点基本原则

    1、注意异常的粒度,不推荐在try中放入过多的代码。 在try中放入过多的代码带来的问题是如果程序抛出异常,将会较...

  • Java基础_异常

    本文主要从如下几点学习Java中的异常 异常的分类 异常分类结构图 异常处理的方法 异常的分类 Java库中本身内...

  • 已检查异常也可在运行时抛出

    Java 异常处理的一个基本原则是, 必须为所有已检查异常提供一个处理器.不过可以利用泛型消除这个限制 在这里, ...

  • 第二章 编程惯用法

    建议 8:利用assert语句来发现问题 使用断言注意以下几点 1 不要滥用,这是基本原则。若由于断言已发了异常,...

  • Python 中处理异常,几点经验

    异常处处有,时时有,随时随地随环境,如同人生的机遇一样,不经意间就发生了。 本文讲几点处理异常的原则。 仔细分析,...

  • MySQL 存储过程中的异常

    1. 定义异常捕获类型及处理方法: 这里面需要注意几点:a 、condition_value [,conditio...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

网友评论

      本文标题:异常处理的几点基本原则

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