Hi 大家好,
今天要開始介紹Python中的錯誤和例外狀況篇之續集,那我們開始吧!
未使用traceback
,可以自訂錯誤訊息內容def func():
try:
1 / 0
except ZeroDivisionError:
print("發生了除以零的錯誤:")
func()
PS D:\Project\practice> python hi.py
發生了除以零的錯誤:
PS D:\Project\practice>
使用traceback
,會將完整的堆疊追蹤
印出來,顯示程式在發生錯誤時的詳細資訊,這對於除錯很有幫助traceback
模組import traceback
def func():
try:
1 / 0
except ZeroDivisionError:
print("發生了除以零的錯誤:")
traceback.print_exc()
func()
PS D:\Project\practice> python hi.py
發生了除以零的錯誤:
Traceback (most recent call last):
File "D:\Project\practice\hi.py", line 5, in func
1 / 0
~~^~~
ZeroDivisionError: division by zero
PS D:\Project\practice>
錯誤類型
、錯誤訊息
及堆疊追蹤
的資訊。這讓你可以更靈活地處理錯誤訊息,例如在捕獲錯誤後可以自己決定如何顯示或記錄錯誤訊息sys
模組import sys
def func():
try:
int("hello world")
except ValueError:
exc_type, exc_value, exc_traceback = sys.exc_info()
print(f"錯誤類型: {exc_type}")
print(f"錯誤訊息: {exc_value}")
print(f"堆疊追蹤: {exc_traceback}")
func()
PS D:\Project\practice> python hi.py
錯誤類型: <class 'ValueError'>
錯誤訊息: invalid literal for int() with base 10: 'hello world'
堆疊追蹤: <traceback object at 0x000001FD9C745900>
PS D:\Project\practice>
sys
模組import sys
def custom_excepthook(exc_type, exc_value, exc_traceback):
print(f"自訂錯誤處理 - 錯誤類型: {exc_type}")
print(f"自訂錯誤處理 - 錯誤訊息: {exc_value}")
sys.excepthook = custom_excepthook
def func():
raise ValueError("這是我自己定義的錯誤訊息")
func()
PS D:\Project\practice> python hi.py
自訂錯誤處理 - 錯誤類型: <class 'ValueError'>
自訂錯誤處理 - 錯誤訊息: 這是我自己定義的錯誤訊息
PS D:\Project\practice>
DeprecationWarning
:警告的一種類型,用來指示某些功能已被棄用。warnings
模組import warnings
def deprecated_function():
warnings.warn("這個功能已被棄用,請使用新方法", DeprecationWarning)
deprecated_function()
PS D:\Project\practice> python hi.py
D:\Project\practice\hi.py:4: DeprecationWarning: 這個功能已被棄用,請使用新方法
warnings.warn("這個功能已被棄用,請使用新方法", DeprecationWarning)
PS D:\Project\practice>
那今天就介紹到這裡,我們明天見~