2014-12-03 54 views
1

我目前正在開發一個模擬工具。該工具不是交互式的。所有可能的例外都將歸因於編程錯誤(開發過程中)或輸入數據損壞。如果發生異常,程序必須終止,因爲它無法運行。我應該在所有異常導致終止的程序中使用異常處理嗎?

所以,我有兩個選擇:

  1. 使用C++異常處理。 Pro:調試時崩潰時會得到堆棧跟蹤。 Contra:嚴重(?)性能開銷。
  2. 調用終止程序的錯誤函數。 Pro:快速簡單。 Contra:沒有堆棧跟蹤。

問題:對性能的影響有多糟糕?一些例外情況可能源自非常重要的功能。

請讓我知道是否有任何根本性的錯誤在我的考慮。

+6

你是怎麼想到***嚴重**性能開銷*?典型的實現只在引發異常時引入開銷,而不是在採用非例外路徑時引入開銷。 – Praetorian 2014-12-03 20:37:55

+2

@Praetorian:由於減少了優化的可能性,還有一些開銷(這是'noexcept'的一個重要原因)。儘管如此,還是不​​是很嚴肅 – Deduplicator 2014-12-03 20:46:04

+1

你確定你不能在'abort()'上獲得核心轉儲嗎? – Deduplicator 2014-12-03 20:48:17

回答

1

由於@ doc建議我可能會使用assert來跟蹤輸入不可知的編程錯誤。然後我會使用異常來處理與輸入有關的錯誤。不僅僅是例外情況,如果您碰巧遇到一種輸入錯誤,您可以從中恢復異常框架已經在那裏了。

相關問題