看下面這個函式
def test():
sum = 3/0
if __name__ == '__main__':
test()
除0肯定是不對的,會引發乙個except,內容如下:
file "e:\src\dongsheng\testpython\testtrace_back.py", line 23, in test()
file "e:\src\dongsheng\testpython\testtrace_back.py", line 19, in test
sum = 3/0
zerodivisionerror: integer division or modulo by zero
python 提供了traceback ,可以完美的輸出except發生時的資訊,就和上面的內容一樣,而且可以輸入到指定的檔案之中,所以,不妨寫乙個裝飾器,修飾那些需要監督的函式,當他們發生異常時,記錄下有關異常的資訊。
#coding=utf-8
from functools import wraps
import traceback
def except_trace(filename):
def decorate(func):
@wraps(func)
try:
func(*args,**kwargs)
except:
fp = open(filename,'w')
traceback.print_exc(file=fp)
fp.close()
return decorate
@except_trace('1.txt')
def test():
sum = 3/0
if __name__ == '__main__':
test()
這一次,發生異常後,有關異常的資訊會輸入到1.txt檔案中,這個檔案中只包含異常的資訊,方便檢視。
Python中except用法和作用
python的except用來捕獲所有異常,因為python裡面的每次錯誤都會丟擲 乙個異常,所以每個程式的錯誤都被當作乙個執行時錯誤。以下是使用except的乙個例子 try foo opne file open被錯寫為opne except sys.exit could not open fil...
python中try及except使用
如下 try x she said surely.print x except exception print the wrong syntax.執行結果如下 a syntaxerror invalid syntax查了很多資料,了解到,異常的定義是 即使一條語句或表示式在語法上是正確的,當試圖執行...
python異常except語句用法與引發異常
話說用python這麼久了,居然沒搞明白except的用法,太不給力了。except 捕獲所有異常 except 異常名 捕獲指定異常 except 異常名1,異常名2 捕獲異常1或者異常2 except 異常名 資料 捕獲指定異常及其附加的資料 except 異常名1,異常名2 資料 捕獲異常名1...