Python用异常对象来表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或者捕捉,程序就会用回溯(traceback,一种错误信息)终止执行:
异常屏蔽
#-*-coding:utf-8-*
classMuffledcalculator:
muffled=False
def calc(self,expr):
try:
return eval(expr)
except ZeroDivisionError:
if self.muffled:
print 'division by zero isillegal'
else:
raise
qqq=Muffledcalculator()
qqq.muffled=True #屏蔽异常的关键,不加这一句(没有打开屏蔽机制),
#异常被捕捉,传递给上层;加上这一句,打开异常屏蔽,异常不会raise到上层
printqqq.calc('10/0')
print 'ssss'
结果:
屏蔽异常
division by zero isillegal
None
Ssss
未屏蔽异常
异常上行到上层,
Traceback (mostrecent call last):
File"E:\eclipse\workspace\python-1\�쳣\�쳣�qλ���.py",line 17, in <module>
print qqq.calc('10/0')
File"E:\eclipse\workspace\python-1\�쳣\�쳣�qλ���.py",line 6, in calc
return eval(expr)
File "<string>", line 1, in<module>
ZeroDivisionError:integer division or modulo by zero