C++ 标准异常类主要包括 std::exception
和其派生类
std::exception
类型的异常来处理所有标准异常。#include <iostream>
#include <exception>
int main() {
try {
throw std::runtime_error("An error occurred");
} catch (const std::exception& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
std::exception
的异常类,用于表示运行时错误。它接受一个字符串参数作为异常的描述信息。#include <iostream>
#include <stdexcept>
int main() {
try {
throw std::runtime_error("An error occurred");
} catch (const std::runtime_error& e) {
std::cerr << "Caught runtime_error: " << e.what() << std::endl;
}
return 0;
}
std::runtime_error
的异常类,用于表示访问数组或其他容器时越界的情况。#include <iostream>
#include <vector>
#include <stdexcept>
int main() {
std::vector<int> vec = {1, 2, 3};
try {
std::cout << vec[3] << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Caught out_of_range: " << e.what() << std::endl;
}
return 0;
}
要创建自定义异常类,只需从 std::exception
或其他标准异常类派生一个新的类,并实现 what() 函数。例如:
#include <iostream>
#include <exception>
class MyCustomException : public std::exception {
public:
const char* what() const noexcept override {
return "My custom exception occurred";
}
};
int main() {
try {
throw MyCustomException();
} catch (const MyCustomException& e) {
std::cerr << "Caught custom exception: " << e.what() << std::endl;
}
return 0;
}
在这个例子中,我们创建了一个名为 MyCustomException
的自定义异常类,它继承自 std::exception
并重写了 what() 函数。在主函数中,我们抛出了一个 MyCustomException
类型的异常,并在 catch 块中捕获并处理它。