簡體   English   中英

C ++中未處理的異常檢查

[英]Unhandled exception check in C++

如果未處理異常,C ++中有什么方法可以獲取編譯時錯誤或警告? 例如,考慮以下Java代碼片段:

public void f()
{
    g();  // <-- Java compiler reports "Unhandled exception" error here.
}

public void g() throws Exception
{
}

g ++或MSVC可以做類似的事情嗎? 還是有任何外部代碼解析工具可以做到這一點? 我想可以通過編程擴展Eclipse CDT的C ++解析器來實現這一目標,但是...有沒有更簡單的解決方案?

簡單地說,不。 C ++異常規范與Java異常規范的含義不同,現在已棄用它們,因此,如果可能,應考慮避免使用它們。

在C ++中,僅在運行時強制執行異常規范所請求的檢查。 在C ++中,如果函數違反其異常規范,則將調用“意外”處理程序。 調用可以潛在地從具有異常規范的函數中拋出任意異常的函數不是編譯時錯誤。

ISO / IEC 14882:2011 15.4 [規格除外] / 11:

一個實現不應僅僅因為在執行時拋出或可能拋出包含函數不允許的異常而拒絕表達式。

簡短的回答:不。 C ++中沒有檢查過的異常。 您可以嘗試使用外部工具,但是TBH我從未見過有人這樣做。 只需正確記錄接口即可。

暫無
暫無

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

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