簡體   English   中英

扭曲:失敗與錯誤

[英]twisted: Failure vs. Error

我什么時候應該使用twisted.python.failure.Failure ,什么時候應該使用twisted.internet.error.ConnectionDone 或者我應該做twisted.python.failure.Failure(twisted.internet.error.ConnectionDone) ,如果是這樣,我應該在什么情況下這樣做呢?

Failure表示異常和回溯(通常與當前堆棧跟蹤不同)。 在構造異步異常時應該使用Failure 因此,當您要使用錯誤觸發Deferred時,或者當您要調用IProtocol.connectionLostClientFactory.clientConnectionFailed等方法時。 這是因為在這種情況下,您希望能夠將不同的堆棧跟蹤與當前堆棧跟蹤之外的異常相關聯。

你不應該使用Failure(ConnectionDone)因為正確的參數的調用Failure接受一個例外情況,也不例外類。 因此,請使用Failure(ConnectionDone()) 您還可以使用零參數表單創建新的FailureFailure() 這僅在存在“當前”異常時才有效,例如在except語句的套件中。 它使用當前異常及其回溯構造Failure

您還可以使用三個參數構建一個Failure ,一個異常類,實例和回溯。 這通常使用sys.exc_info()的返回值來完成。

如果您只想引發異常,則無需創建Failure 只需執行您在Python程序中通常執行的操作即可引發異常: raise SomeException(...)

暫無
暫無

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

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