Python中的raise语句

1. raise语句

  1. 为了引发异常,可以使用一个类(应该是Exception的子类)或者实例参数调用raise语句。
  2. raise语法格式如下:
raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
Python中的raise语句

2. 特殊情况

如果捕捉到了异常,但是又想重新引发它,即传递异常不进行处理,可以调用不带参数的raise。
示例:

class MuffledCalculator:
    muffled = False
    def calc(self,expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled:
                print("Division by zero is illegal")
            else:
                raise 

这是一个能屏蔽“ZeroDivisionError”(除零错误)的计算器类。如果这个类被**,那么计算器就会打印错误信息,而不是让异常传播。如果在在与用户进行交互的过程中使用,那么这就有用了,但是如果在程序内部使用,引发异常会更好些。因此此时“屏蔽”机制可以关掉。
Python中的raise语句