簡體   English   中英

Python 中是否有內置(或第 3 方)函數來獲取上下文中捕獲的異常?

[英]Is there a buildin(or 3rd party) function in Python to get the exception caught in context?

Python中是否有一個函數,例如get_exception,所以我可以這樣做:

try:
    can_raise_anything()
except:
    ex = *get_exception()*
    print('caught something: ' + str(ex))

我知道在 Python 3 中,我應該使用except BaseException as ex:來完成任務。 我只是想知道是否有一個函數可以做到這一點。

except BaseException as e也適用於 Python 2。

如果出於某種原因你真的想使用一個函數, sys.exc_info()將返回一個元組,它的第二個元素是異常對象。 (第一個元素是異常類型,第三個元素是回溯。)

except塊可以接收一個附加部分,如下所示:

try:
    stuff()
except Exception as e:
    print e

一些庫(包括內置庫)提供了特定的Exception類型,可用於根據發現的錯誤類型做出更好的反應。 你可以有很多的事實結合這except一個塊try塊,你可以做一個非常故障安全應用程序。 復雜的try-except塊示例:

try:
    result = a / b
except TypeError as e:
    print "Woops! a and b must be numbers!"
    result = int(a) / int(b)
    print e
except NameError as e:
    print "A variable used doesn't exist!"
    print e
except ArithmeticError as e:
    print "It seems you've gone past infinity, under atomicity or divided by zero!"
    print e
except Exception as e:
    print "Something REALLY unexpected happened!"
    print e

示例中使用的內置異常:

  • TypeError:當變量的類型意外時(例如添加字符串和數字)
  • NameError:使用的變量不存在
  • ArithmeticError:一般數學錯誤
  • 例外:任何類型的錯誤,都可以用於簡單的except s 或僅用於“其他一切”

可以在http://docs.python.org/2/library/exceptions.html找到 Python 2.x 的內置異常列表及其描述。 注意:通常自定義庫有描述它們引發的自定義異常的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM