在C++中,處理異常情況通常使用異常處理機制
<exception>
頭文件。#include<iostream>
#include<exception>
throw
關(guān)鍵字拋出一個異常。通常,我們會拋出一個繼承自std::exception
的異常對象。void someFunction() {
if (someErrorCondition) {
throw std::runtime_error("An error occurred");
}
}
try
和catch
塊來捕獲并處理異常。try
塊包含可能拋出異常的代碼,catch
塊用于處理特定類型的異常。int main() {
try {
someFunction();
} catch (const std::exception& e) {
std::cerr << "Caught exception: " << e.what()<< std::endl;
}
return 0;
}
catch
塊來處理不同類型的異常。它們會按照從上到下的順序進(jìn)行匹配。try {
// ...
} catch (const std::runtime_error& e) {
// Handle runtime errors
} catch (const std::exception& e) {
// Handle other exceptions
}
catch
塊中,可以使用throw;
(注意沒有參數(shù))來重新拋出當(dāng)前處理的異常。這在需要在捕獲異常后執(zhí)行一些清理工作,然后將異常傳遞給更高層次的異常處理機制時非常有用。try {
try {
someFunction();
} catch (const std::exception& e) {
std::cerr << "Handling exception at the first level"<< std::endl;
throw; // Re-throw the exception
}
} catch (const std::exception& e) {
std::cerr << "Handling exception at the second level"<< std::endl;
}
std::exception
或其他異常類。class CustomException : public std::exception {
public:
const char* what() const noexcept override {
return "Custom exception message";
}
};
// Usage
throw CustomException();
通過使用C++的異常處理機制,可以更好地處理程序中的錯誤和異常情況,提高代碼的健壯性和可維護性。