C++中的异常
异常是一种在程序运行过程中可能会发生的错误。
异常没有被处理,会导致程序终止。
抛出异常
throw 异常信息
捕获异常
try
{
// 可能会发送异常的代码
}
catch ( 异常类型 变量名 )
{
// 处理代码
}
catch ( 异常类型 变量名 )
{
// 处理代码
}
int func(int a, int b)
{
if ( b == 0 ) throw "除数不能为0";
return a / b;
}
int main()
{
int a = 10, b = 0;
int c;
try
{
c = func(a, b);
}
catch ( const char *msg )
{
cout << "异常信息:" << msg << endl;
}
cout << c << endl;
return 0;
}
捕获所有异常是catch (...)。
异常的抛出声明
为了增强可读性和方便团队协作,如果函数内部可能会抛出异常,建议函数声明一下异常类型。
int func(int a, int b) throw(const char *) // 抛出声明
{
if ( b == 0 ) throw "除数不能为0";
return a / b;
}
int main()
{
int a = 10, b = 0;
int c;
try
{
c = func(a, b);
}
catch ( const char *msg )
{
cout << "异常信息:" << msg << endl;
}
cout << c << endl;
return 0;
}
自定义异常类型
class Exception
{
public:
int code;
string msg;
Exception(int code, string msg) : code(code), msg(msg) { }
};
int main()
{
cout << 1 << endl;
try
{
throw Exception(1, "异常信息");
}
catch(const Exception &e)
{
cout << "code:" << e.code << ", msg:" << e.msg << endl;
}
cout << 2 << endl;
return 0;
}
标准异常(std)
