在C++中,处理异常情况通常使用异常处理机制
<exception>
头文件。#include<iostream>
#include<exception>
throw
关键字抛出一个异常。通常,我们会抛出一个继承自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
块来处理不同类型的异常。它们会按照从上到下的顺序进行匹配。try {
// ...
} catch (const std::runtime_error& e) {
// Handle runtime errors
} catch (const std::exception& e) {
// Handle other exceptions
}
catch
块中,可以使用throw;
(注意没有参数)来重新抛出当前处理的异常。这在需要在捕获异常后执行一些清理工作,然后将异常传递给更高层次的异常处理机制时非常有用。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++的异常处理机制,可以更好地处理程序中的错误和异常情况,提高代码的健壮性和可维护性。