什麼時候應該使用twisted.python.failure.Failure
,何時應該使用類似twisted.internet.error.ConnectionDone
的東西?或者我應該做twisted.python.failure.Failure(twisted.internet.error.ConnectionDone)
,如果是的話,我應該怎麼做?twisted:Failure vs. Error
3
A
回答
8
A Failure
表示異常和回溯(通常不同於當前堆棧跟蹤)。當你構造一個異步異常時,你應該使用Failure
。所以,當你打算髮出一個錯誤Deferred
,或者當你打電話給IProtocol.connectionLost
或ClientFactory.clientConnectionFailed
這樣的方法。這是因爲在這種情況下,您希望能夠將不同的堆棧跟蹤與異常相比,而不是當前的堆棧跟蹤。
您不應該使用Failure(ConnectionDone)
,因爲Failure
的正確的單參數調用接受異常實例,而不是異常類。所以,改爲使用Failure(ConnectionDone())
。您也可以使用零參數表單創建新的Failure
:Failure()
。這隻適用於存在「當前」異常的情況,例如在except
聲明的套件中。它使用當前的異常以及其回溯構建Failure
。
你也可以用三個參數構造一個Failure
,它是一個異常類,實例和回溯。這通常是使用返回值sys.exc_info()
完成的。
當你只是想引發一個異常時,你不需要創建一個Failure
。只要做一些你通常在Python程序中發起的異常:raise SomeException(...)
。
相關問題
- 1. Error vs Meteor.Error
- 2. throw Error('msg')vs throw new Error('msg')
- 3. VS 2012:Post Build xcopy error 2
- 4. PHP:mysqli_sql_exception vs mysql $ errno and $ error
- 5. mysqli :: error Vs. mysqli_stmt:錯誤
- 6. 調用jquery ajax - .fail vs.:error
- 7. matlab error matrix diminsion error
- 8. &error error - iOS dev
- 9. Faraday :: Error :: TimeoutError(Timeout :: Error):
- 10. @string error + api level error
- 11. RSolr :: Error :: Http:RSolr :: Error :: Http - 400 Bad Request error?
- 12. flash error「Error#2044:Unhandled ioError :. text = Error#2032:Stream Error。URL:images.xml」
- 13. VS 11 Express beta Error獲取開發人員許可證
- 14. 休息例外:包裝器VS Error對象
- 15. Error vs ErrorEvent - 在Purescript中使用catchException來處理異常
- 16. Android error「SQLiteException:near」1「:syntax error(code1)
- 17. ExtJS 5.1 Build Error(Yui Parse Error)
- 18. Flask Pluggable Views Error:「Not Implemented Error」
- 19. ERROR DEP0700:ERROR IN APPMODEL VERSION
- 20. GetVolumeInformation Error
- 21. Mosquitto Error
- 22. bitmap.Save error
- 23. GeoPy:GeocoderQuotaExceeded error
- 24. Rails:MassAssignmentSecurity :: Error
- 25. PreparedStatement error
- 26. Error OnActionItemClicked
- 27. Error MulticastSocket.joinGroup()
- 28. Homography Error
- 29. 「Missing」)error
- 30. MPI_Scatter()error