0
在Python中,如果函數A調用函數B,並且函數B調用函數C,並且函數C拋出一個ValueError(作爲示例),那麼錯誤是否會在調用堆棧上向上,從而函數A也會拋出ValueError?例如,我可以從函數A中的函數C捕獲值錯誤嗎?Python異常會進入調用堆棧嗎?
另外,如果您創建自己的僅在函數C中定義的異常,它是否也會上調用堆棧,以便函數A拋出相同的錯誤?
在Python中,如果函數A調用函數B,並且函數B調用函數C,並且函數C拋出一個ValueError(作爲示例),那麼錯誤是否會在調用堆棧上向上,從而函數A也會拋出ValueError?例如,我可以從函數A中的函數C捕獲值錯誤嗎?Python異常會進入調用堆棧嗎?
另外,如果您創建自己的僅在函數C中定義的異常,它是否也會上調用堆棧,以便函數A拋出相同的錯誤?
錯誤是否使調用堆棧的方式,使函數A也引發ValueError?
讓我們試試看。
def a():
try:
b()
except ValueError:
print("Caught a value error in `a`.")
def b():
c()
def c():
raise ValueError
a()
結果:
Caught a value error in `a`.
是的,看起來像錯誤使得它的方式調用堆棧。
如果您創建了自己的僅在函數C中定義的異常,它是否也會上調用堆棧,以便函數A引發相同的錯誤?
讓我們試試看。
def a():
try:
b()
except:
print("Caught some kind of exception in `a`.")
def b():
c()
def c():
class MyCustomException(Exception):
pass
raise MyCustomException
a()
結果:
Caught some kind of exception in `a`.
是的,自定義異常使他們的方式調用堆棧過。但是你不能在a
中做except MyCustomException:
,因爲這個名字只存在於c
。出於這個原因,在可行的情況下,在全球範圍內宣佈課程。
你試過了嗎? –
你在這裏問的是一件簡單的事情,你可以檢查自己。 – itzMEonTV
我想知道異常的概念如何在不傳遞堆棧的情況下工作。 –