C++ 异常处理
#1 环境
C++14
CMake 3.17
macOS 10.15.5
Clion
#2 开始
#2.1 格式
格式:
try{
// 抛异常
throw ExceptionType("xxx");
}catch( ExceptionType1 e1 ){ // ExceptionType1异常
// 异常处理
}catch( ExceptionType2 e2 ){ // ExceptionType2异常
// 异常处理
}catch( ExceptionTypeN eN ){ // ExceptionTypeN异常
// 异常处理
}catch (exception e) { // 所有异常
// 异常处理
}
例子:
#include <iostream>
#include <exception>
using namespace std;
int main() {
try {
throw length_error("length_error异常");
} catch (logic_error e) {
cout<<e.what()<<endl; // 打印异常信息
} catch (exception e) {
cout<<e.what()<<endl; // 打印异常信息
}
return 0;
}
#2.2 异常类型
#2.3 自定义异常
#include <iostream>
#include <exception>
using namespace std;
struct MyException : public exception
{
const char * what () const throw ()
{
return "Cpp Exception";
}
};
int main() {
std::cout << "Hello, Exception!" << std::endl;
try {
// throw length_error("length_error异常");
throw MyException(); // 主动抛出自定义异常
} catch (logic_error e) {
cout<<e.what()<<endl;
}catch (MyException& e) { // 捕获自定义异常
cout<<e.what()<<endl; // 打印异常信息
} catch (exception e) {
cout<<e.what()<<endl;
}
return 0;
}