Python中的raise语句
raise语句
1. raise语句
- 为了引发异常,可以使用一个类(应该是Exception的子类)或者实例参数调用raise语句。
- raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
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”(除零错误)的计算器类。如果这个类被**,那么计算器就会打印错误信息,而不是让异常传播。如果在在与用户进行交互的过程中使用,那么这就有用了,但是如果在程序内部使用,引发异常会更好些。因此此时“屏蔽”机制可以关掉。