首頁 > 後端開發 > Python教學 > 請求寬恕,而不是許可:異常處理何時比先發制人的檢查更好?

請求寬恕,而不是許可:異常處理何時比先發制人的檢查更好?

Linda Hamilton
發布: 2024-12-30 21:59:14
原創
324 人瀏覽過

Ask Forgiveness, Not Permission: When Is Exception Handling Better Than Preemptive Checks?

「請求寬恕而不是許可」:技術解釋

在程式設計中,短語「請求寬恕而不是許可」描述了兩種截然不同的編碼風格:

「請求許可」樣式:

if can_do_operation():
    perform_operation()
else:
    handle_error_case()
登入後複製

「請求寬恕」樣式:

try:
    perform_operation()
except Unable_to_perform:
    handle_error_case()
登入後複製

在「請求許可」方法中,存在can_do_operation如果操作無法執行,() 檢查會阻止執行 Perform_Operation() 呼叫。然而,這種方法依賴 can_do_operation() 檢查的準確性,這在動態環境中或處理外部資源時可能並不總是可靠。

「請求寬恕」的好處

    「請求寬恕」風格提供了幾種好處:
  • 處理並發情況:
  • 在多執行緒或多資源環境中,檢查和操作之間的條件可能會發生變化,使得「請求許可」的方式失效。
  • 避免過度限制性檢查:
「請求許可」需要定義精確而全面的標準,可能具有挑戰性且容易出錯。 「請求寬恕」方法提供了更大的靈活性,並避免無意中排除有效操作。

範例:實例屬性存取

在您的範例中,您詢問在存取實例屬性時如何使用「請求寬恕」。雖然通常被認為是程式設計師錯誤,但存取不存在的屬性可能是有效的場景,例如在處理可選物件部分時。

if foo.bar is not None:
    handle_optional_part(foo.bar)
else:
    default_handling()
登入後複製
而不是使用異常處理程序,檢查屬性是否不是 None 更Pythonic。對於可選屬性,bar 屬性通常最初初始化為 None 並設定為有意義的值(如果可用)。這允許進行以下測試:

結論

「請求寬恕而不是許可」原則建議將異常作為程序執行的自然部分,特別是當處理可選功能或外部資源互動。它在動態和並發環境中提供了更大的靈活性和適應性,同時仍透過異常處理機制啟用錯誤處理。

以上是請求寬恕,而不是許可:異常處理何時比先發制人的檢查更好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板