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
的異常類,用于表示運行時錯誤。它接受一個字符串參數(shù)作為異常的描述信息。#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
的異常類,用于表示訪問數(shù)組或其他容器時越界的情況。#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;
}
要創(chuàng)建自定義異常類,只需從 std::exception
或其他標準異常類派生一個新的類,并實現(xiàn) what() 函數(shù)。例如:
#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;
}
在這個例子中,我們創(chuàng)建了一個名為 MyCustomException
的自定義異常類,它繼承自 std::exception
并重寫了 what() 函數(shù)。在主函數(shù)中,我們拋出了一個 MyCustomException
類型的異常,并在 catch 塊中捕獲并處理它。