python捕获异常
1 2 3 4
try: a = 1 / 0 except Exception, e: print str(e)
输出
1
integer division or modulo by zero
可以继承Exception类
1 2 3 4 5 6 7
class AIsZeroError(Exception): pass try: raise AIsZeroError('a is 0') except AIsZeroError, e: print str(e)
输出
python中使用traceback模块处理异常,sys模块也提供了特定的参数和函数。
sys.exc_info()
该函数会返回一个三元元组,包含异常信息(exc_type exc_value exc_traceback)
1 2 3 4 5 6 7
try: a = 1 / 0 except Exception: t, value, tb = sys.exc_info() print t print value print tb
输出
1 2 3
<type 'exceptions.ZeroDivisionError'> integer division or modulo by zero <traceback object at 0x000000000367A5C8>
traceback.print_exception()
格式化输出异常
1 2 3 4 5
try: a = 1 / 0 except Exception: t, value, tb = sys.exc_info() traceback.print_exception(t, value, tb)
输出
1 2 3 4
Traceback (most recent call last): File "D:/MyData/code/python_test/just_fo_test/main.py", line 5, in <module> a = 1 / 0 ZeroDivisionError: integer division or modulo by zero
traceback.print_exc()
traceback.print_exc()函数只是traceback.print_exception()函数的一个简写形式
1 2 3 4
try: a = 1 / 0 except Exception: traceback.print_exc(file=sys.stdout)
traceback.format_exception()
传入参数,返回一个数组
1 2 3 4 5 6
try: a = 1 / 0 except Exception: t, value, tb = sys.exc_info() for l in traceback.format_exception(t, value, tb): print l
输出
1 2 3 4 5 6
Traceback (most recent call last): File "D:/MyData/code/python_test/just_fo_test/main.py", line 5, in <module> a = 1 / 0 ZeroDivisionError: integer division or modulo by zero
近期评论