C++中的例外規格允許指定函數可能拋出的例外類型,提高程式碼可讀性和可維護性。其語法為:returnType functionName(...) noexcept(noexcept-spec)。 noexcept-spec有以下形式:noexcept: 函式不會拋出例外。 noexcept(type): 函式只會拋出指定型別的例外。 noexcept(true): 與noexcept等效。 noexcept(false): 函式可能會拋出任何例外。
如何在C++ 中使用例外規格
簡介
異常規格允許在函數中聲明它可能會拋出的異常類型。這有助於提高程式碼的可讀性和可維護性,因為編譯器可以在運行時檢查異常是否匹配規範,並在不匹配時發出錯誤。
語法
異常規範寫在函數宣告之後的 noexcept
修飾符中。語法如下:
returnType functionName(arg1, arg2, ...) noexcept(noexcept-spec) { // 函数体 }
其中 noexcept-spec
是一個可選的布林表達式,表示函數是否會拋出例外。具體形式有:
noexcept
: 函數不會拋出任何例外。 noexcept(type)
: 函數只會拋出指定類型的例外。 noexcept(true)
: 與 noexcept
等效。 noexcept(false)
: 函數可能會拋出任何例外。 實戰案例
以下是一個範例,示範如何使用例外規格:
#include <stdexcept> #include <iostream> int divide(int numerator, int denominator) noexcept(false) { if (denominator == 0) { throw std::invalid_argument("Denominator cannot be zero"); } return numerator / denominator; } int main() { try { int result = divide(10, 0); std::cout << "Result: " << result << std::endl; } catch (const std::invalid_argument& e) { std::cout << "Error: " << e.what() << std::endl; } return 0; }
這個程式執行以下步驟:
divide
函數被宣告為noexcept(false)
,指示它可能會拋出任何例外。 main
函數呼叫 divide
函數並使用 try-catch
區塊處理潛在的異常。 0
為分母時,divide
函數會拋出 std::invalid_argument
例外。 catch
區塊捕獲,並列印錯誤訊息。 優勢
使用例外規格具有以下優勢:
以上是如何在C++中使用異常規格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!