首頁  >  文章  >  後端開發  >  異常說明符在現代 C 中仍然相關嗎?

異常說明符在現代 C 中仍然相關嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 03:47:02812瀏覽

Are Exception Specifiers Still Relevant in Modern C  ?

我應該在 C 中加入異常說明符嗎?

C 中的異常說明符允許函數指示它們是否可能拋出異常,例如:

<code class="cpp">void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type</code>

雖然這些說明符可以傳達意圖,但由於以下幾個因素,它們的實際使用存在疑問:

執行限制

編譯器並不嚴格執行強制執行異常說明符,降低其有效性。理想的行為會涉及違反規範的編譯錯誤,但這並不能保證。

對違規行為的嚴厲懲罰

如果函數違反異常說明符,標準行為是終止程序。這種嚴厲的回應可能不適合所有情況。

開發環境中不一致的處理

某些開發環境,例如VS.Net,將throw(X) 視為throw(...),破壞了對標準的遵守。

反對異常說明符的爭論

除了上述問題之外,還有幾個觀點主張反對使用異常說明符:

  • 與模板的兼容性:由於不可預測的異常行為,異常規範可能會阻礙模板程式碼的開發。
  • 禁止擴充性: 指定預期的異常可能會限製程式碼隨時間的演變。
  • 與遺留程式碼的相容性:處理遺留程式碼使得很難預測可能的異常,可能導致程式終止。
  • 專注於錯誤處理:重點應放在傳回常見錯誤並為特殊情況保留異常。

何時異常說明符可能有用

儘管一般建議不要使用異常說明符,但在以下情況下它們仍然是有益的:

  • 函式庫僅拋出自己的異常,從而允許明確的意圖規範。然而,這種用例在實務上很少見。

以上是異常說明符在現代 C 中仍然相關嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn