def f(n):
if n>0:
print(1/n)
else:
raise Exception
try:
f(0)
except Exception:
print("Error!")
在f(n)內引發異常時,解釋器是否返回到try/except塊(這意味着try/except有自己的塊),還是立即引發和處理該錯誤(這意味着相反)?Try/Except塊是否創建自己的堆棧?
def f(n):
if n>0:
print(1/n)
else:
raise Exception
try:
f(0)
except Exception:
print("Error!")
在f(n)內引發異常時,解釋器是否返回到try/except塊(這意味着try/except有自己的塊),還是立即引發和處理該錯誤(這意味着相反)?Try/Except塊是否創建自己的堆棧?
Actualy它提出了從F(n)的函數,直到它找到一個的try/catch處理機或的程序棧的結束。在最後一種情況下,程序將停止並引發用戶的錯誤(通過控制檯)。
這將引發異常到用戶:
def f(n):
raise Exception
f(5)
但是,如果你添加一個try/catch之間,異常會被處理,除了塊:
def f(n):
raise Exception
try:
f(5)
except:
print('Error handled')
在你的情況,我認爲這是更pythonic:
def f(n):
try:
print(1/n)
except ZeroDivisionError:
print ("can't divide by zero")
你永遠不想提出一個例外,因爲你l找到錯誤的機會
好的解釋,不好的使用try/except(使用空白的except語句是不好的做法) –
是的,對於這個例子,我用一個簡單的打印顯示來顯示如果你能夠追加什麼處理一個異常,但作爲@ Two-BitAlchemist說,如果你想處理這樣的錯誤**你必須**執行另一個代碼,但不要離開除了bloc blanck(沒有真正的句柄) – hugodecasta