【Python】异常处理 try…except
无论是为了健壮性考虑还是获取错误信息,异常处理是必不可少的,那么本测试简单测试一下。
1:捕获所有异常
1 2 3 4 5 6 7 8 9 |
>>> a = 10 >>> b = 0 >>> try: ... c = a/b ... except Exception as e: ... print ("Err:",e) ... Err: division by zero >>> |
2:利用sys模块
1 2 3 4 5 6 7 8 9 10 11 |
>>> import sys >>> a = 10 >>> b = 0 >>> try: ... c = a/b ... except: ... err_inf = sys.exc_info() ... print (err_inf) ... (<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x01F27BE8>) >>> |
当然,sys.exc_info()是列表,也可以有针对性的打印
1 2 3 4 5 6 7 8 9 10 11 |
>>> import sys >>> a = 10 >>> b = 0 >>> try: ... c = a/b ... except: ... err_inf = sys.exc_info() ... print (err_inf[0],err_inf[1]) ... <class 'ZeroDivisionError'> division by zero >>> |
3:利用traceback模块
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> import traceback >>> a = 10 >>> b = 0 >>> try: ... c = a/b ... except: ... traceback.print_exc() ... Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: division by zero >>> |
写入文件
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> import traceback >>> a = 10 >>> b = 0 >>> try: ... c = a/b ... except: ... f=open("d:\err.log",'a') ... traceback.print_exc(file=f) ... f.flush() ... f.close() ... >>> |