1. C++ 新增的异常处理
在 C++ 中新增了异常处理语法 try-catch,try 语句处理正常代码逻辑,catch 语句处理异常情况,通过 throw 语句可以抛出异常信息然后由相对应的 catch 语句处理。具体语法如下:
try
{
...
}
catch
{
...
}
需要注意的是,throw 语句会由于发生地方的不同而表现出不同的异常抛出情形,具体遵循以下规则:
- 当 throw 语句发生在 try 语句中,所抛出的异常只能命中同作用域中的 catch 语句,同时 catch 语句必须定义在 try 语句之后且两语句之间不能定义任何表达式。
- 当 throw 语句发生在非 try 语句时,会立即结束当前函数,并带着异常信息返回函数的调用处,由上一级函数处理该抛出的异常。
- 实验:
void fun()
{
try
{
throw 1;
}
catch(...)
{
cout << "in fun:1" << endl;
}
try
{
throw 1;
}
catch(...)
{
cout << "in fun:2" << endl;
throw 1;
}
try
{
throw 1;
}
catch(...)
{
cout << "in fun:3" << endl;
throw 1;
}
}
void tmp()
{
fun();
cout << "in tmp()" << endl;
}
int main(void)
{
try
{
tmp();
}
catch(...)
{
cout << "in main" <&