1. 程式人生 > >Python內置的處理異常機制與調試

Python內置的處理異常機制與調試

異常 hello 程序 finall exception 沒有 運行 style .py

Python 內置了一套 try..except...finally的錯誤處理機制

Python內置的try...except...finally用來處理錯誤十分方便。出錯時,會分析錯誤信息並定位錯誤發生的代碼位置才是最關鍵的。

try..except...else..finally

先跑一遍程序

try:  #先執行 可能會發生錯誤的代碼
    print(try...)
    r = 10 / int(2)
    print(result:, r)
except ValueError as e:  捕捉 異常的類型 並進行修飾
    print(ValueError:
, e) except ZeroDivisionError as e: print(ZeroDivisionError:, e) else: #當沒有錯誤發生時 都會執行這段代碼卡 print(no error!) finally: # 無論有沒有 錯誤 流程體結束都會執行 finally print(finally...) print(END)

如果不知道將會發生什麽錯誤 但是還要保證這段代碼正常運行 可以使用

def foo(s):
    return 10 / int(s)

def bar(s):
    return foo(s) * 2

def
main(): try: bar(0) except Exception as e: #Exception可以允許你不事先指定錯誤原因 只要檢測到 異常 就會執行 print(Error:, e) finally: print(finally...)
#Python內置的logging 模塊 
#可以記錄下來錯誤 通過配置,logging還可以把錯誤記錄到日誌文件裏,方便事後排查
import logging def foo(s): return 10 / int(s) def bar(s):
return foo(s) * 2 def main(): try: bar(0) except Exception as e: logging.exception(e) main() print(END)

也可人為拋出異常

class FooError(ValueError):
    pass
a= 1
if a != 0:
    raise FooError(invalid value: %s % s)
else:
    print(ok)


-----------------------------------
Traceback (most recent call last):
  File "C:/Users/hxsd/PycharmProjects/helloWorld/類的__slots__.py", line 47, in <module>
    raise FooError(invalid FooError)  #自定義拋出的錯誤信息
__main__.FooError: invalid FooError

調試時可以使用斷點調試的方式

Python內置的處理異常機制與調試