例外規范,是C++98新增的一項功能,但C++11卻將其摒棄了,這意味著C++11仍然可以使用這個特性,但以后可能會從標準中剔除,因此不建議使用它,
例外規范,如下所示:
double harm(double a) throw(bad_thing);
double marm(double a) throw();
其沖throw()部分就是例外規范,它可能出現在函式原型和函式定義中,可包含型別串列,也可不包含,
例外規范的作用之一是,讓編譯器添加執行于運行階段的檢查代碼,檢查是否違反了例外規范,但是這很難檢查,例如,marm()可能不會引發例外,但庫更新后它卻會引發例外,總之,編程社區達成的一致是,最好不好使用這項功能,而C++11也建議您忽略例外規范,然而,C++11確實支持一種特殊的例外規范,
您可使用新增的關鍵字noexcept指出函式不會引發例外:
double marm(double a) noexcept;
有關這種例外規范是否有必要和有用存在一些爭議,有些人認為最好不要使用它,而有些人認為引入這個新關鍵字很有必要,理由是知道函式不會引發例外有助于編譯器優化代碼,通過使用這個關鍵字,撰寫函式的程式員相當于做出了承諾,
還有運算子noexcept()它判斷其運算元是否會引發例外,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279945.html
標籤:其他
上一篇:本人停更告知
