![](/img/trans.png)
[英]Best way to do many try-except blocks within Python class assignments?
[英]Is there a best practice to be followed when writing many try-except blocks?
一個簡單的例子來說明我的意思,假設我有 3.py 文件(file1、file2、file3)為我執行不同的任務,我需要在每一步都記錄錯誤,這是正確的方法嗎還是可以遵循另一種最佳實踐?
文件1.py:
def some_function(some_var):
try:
if some_var == 0:
raise ValueError("Can't be zero")
else:
return 1
except ValueError:
raise
文件2.py
import file1
def some_other_fn(some_other_var):
try:
return file1.some_function(some_other_var)
except:
raise
文件3.py
import file2
import traceback
try:
res = f2.some_other_fn(0)
except:
# handle err
print(traceback.format_exc())
當然,另一個問題是,當我重新提出在 file1 中可能遇到的多種類型的錯誤時(比如說 4+),我是否應該在不同的文件中捕獲相同的 4 個錯誤? 這似乎是多余的代碼。 有沒有辦法讓我知道在 file3 中 file1 發生了什么樣的錯誤,而無需在 file2 和 file3 中顯式寫入異常except ValueError
?
請注意,在file1和file2中退出是不可能的,file3是主要的控制流,其他函數必須返回它。
你似乎不明白 try-except 是如何工作的。 請重復您的教程以獲取示例。 由於基本代碼沒有引發運行時錯誤的可能性,因此 try-except 構造是不合適的。 手動引發異常是愚蠢的,將其包裝在 try-except 塊中,只是為了重新引發相同的異常。
反而:
def some_function(some_var):
if some_var == 0:
raise ValueError("Can't be zero")
else:
return 1
同樣,您的下一個 function 具有功能上的 null try-except 塊。 您不會以任何方式專門處理異常,因此您所做的只是復制默認的異常傳播——運行時系統已經這樣做了。
反而:
import file1
def some_other_fn(some_other_var):
return file1.some_function(some_other_var)
在你的最后一個塊中,你終於正確地使用了 try-except :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.