回覆列表
  • 1 # 這輩子就python了

    如果是自己用,那無所謂,自己說改就可以改。要是交付給別人,還是約定返回值吧,到時候人家過來問,你一看,就知道哪裡出問題了

  • 2 # 一粒塵土一個世界

    我覺得主要還是要看你自己的需求是什麼,如果這個異常不重要,完全可以忽略的話,又不想程式到此結束的話,就可以直接丟擲異常。如果是在實際工作中,尤其是商業運用上,建議是設定特定的錯誤碼,根據這個錯誤碼,你就能夠快速地知道是什麼錯誤,什麼原因引起的。

  • 3 # 程式設計師小助手

    結論:不說那個好,丟擲幾個例子,題主您看看,哪個更好。

    前言

    就跟老師講課一樣,直接給說一個定理,一個結論,太抽象,我都不知道這是什麼呢,你就告訴我要怎麼用?

    所以本文用程式碼樣例,告訴你哪個才是更好的選擇。

    手動控制異常

    python的異常資訊,可以手動顯式丟擲,像下面這樣。

    使用raise關鍵字,丟擲ValueError異常。那麼執行後就可以異常中斷。

    使用try - catch 結構捕捉異常資訊,可以寫入日誌,或控制檯列印。

    這樣不會中斷程式,繼續執行,在線上的程式碼,尤其如此。

    上圖示例,一個沒有被捕捉到的異常,中斷了程式執行。

    最佳實踐

    如何正確而優雅無害地控制丟擲異常呢?上段我們使用的兩種方式,手動修改了execption message內容,這樣看起來錯誤資訊很直觀,可是不利於排查故障點。

    所以最佳實踐上,可以從這些點出發。

    1 - 不要修改異常資訊

    將程式的錯誤資訊,捕捉到之後,輸出到日誌檔案。

    2 - 使用sys.exc_info()保留堆疊追蹤和錯誤值

    如圖,sys.exec_info()返回錯誤型別,值,和堆疊資訊,方便定位。執行起來大概是這樣的。

    不過要注意的是 python2和python3略有區別。python3你可以使用異常資訊鏈式追蹤。

    類似上述方式。

    一個長列表:python有哪些異常

    下面列出了python內29個異常的詳細情況。

    這些都是在程式執行中可能丟擲的,也是程式設計師可以在程式中手動丟擲的異常型別。

    結語

    一般寫小型的指令碼處理函式,可以手動控制異常,這也是python的常見做法。

    而大型的框架,一般對異常型別做了深層次的封裝,不同型別的庫,丟擲不同的異常。

    面向物件的寫法,可以很容易用繼承的方式處理異常。

  • 中秋節和大豐收的關聯?
  • 自由泳划水,手要划水多深?