簡體   English   中英

引發錯誤的目的是什么?

[英]What's the purpose of raising in error?

如果退出程序,使用raise有什么意義? 允許崩潰發生會不會同樣有效?

如果我省略了try-except塊,當除以零時該函數崩潰並顯示原因。 還是有其他一些我不知道的用途?

def div(x,y):
    try:
        return(x/y)
    except ZeroDivisionError as problem:
        raise (problem)

我你的案例效果是一樣的。 但是你可能想要在出現錯誤(清理等)的情況下執行一些額外的邏輯,並且可能會引發一個不同的(可能是自定義的)錯誤,而不是原始系統的低級錯誤,就像消息“數據不正確,請檢查輸入” 。 這可以通過捕獲錯誤並提出另一個錯誤來完成。

使用加注沒有意義(在這種情況下)。 通常,你會在那里做一些代碼來做“別的事情” - 這可能包括輸出更多的調試信息,寫出一些日志數據,用不同的參數集重試操作等等。等等。

我不確定你的情況有多大價值,當發生異常時它只是重新引發它 - 似乎有人(也許)打算在那里編寫某種處理代碼,但是從來沒有繞過它。

異常處理用例的一些很好的例子在Python Exception Handling Wiki中 - > http://wiki.python.org/moin/HandlingExceptions

重新引發異常的原因是允許任何代碼調用你的機會在你自己完成一些事情之后處理它。 例如,您已關閉正在使用的文件(因為清潔度是一種優點),但您的代碼無法繼續。

如果你不打算做任何事來處理異常,那么不,沒有理由為它編寫異常處理程序!

重新引發異常的正確方法是簡單地使用不帶任何參數的raise 這樣,無論誰捕獲異常(或者腳本的用戶,如果沒有人捕獲它),都會得到一個正確的堆棧跟蹤,告知異常最初引發的位置。

暫無
暫無

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

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