#include<iostream> using namespace std; class excep { private: char *ch; public: excep(char *m="exception class..."){ch=m;} void print(){cerr<<ch<<endl;} }; void err1(){ cout<<"enter err1\n"; throw excep("exception"); } void err2(){ try{cout<<"enter err2\n";err1();} catch(int){cerr<<"err2:catch\n";throw;} } void err3(){ try{cout<<"enter err3\n";err2();} catch(...){cerr<<"err3:chtch\n";throw;} } int main(){ try{err3();} catch(...){cerr<<"main:catch\n";} return 0; }输出结果是什么
时间: 2024-03-05 07:50:35 浏览: 86
这段代码会输出以下结果:
```
enter err3
enter err2
enter err1
err3:chtch
main:catch
```
解释:
- 在`main`函数中调用`err3`函数,进入`err3`函数中,输出`enter err3`。
- 在`err3`函数中调用`err2`函数,进入`err2`函数中,输出`enter err2`。
- 在`err2`函数中调用`err1`函数,进入`err1`函数中,输出`enter err1`。
- 在`err1`函数中抛出一个`excep`类型的异常,该异常被`catch(...)`捕获。
- 由于没有匹配到`catch`块,该异常被继续抛出,被`err2`函数中的`catch(int)`捕获。
- 在`err2`函数的`catch`块中,输出`err2:catch`,然后继续抛出异常。
- 该异常被`err3`函数中的`catch(...)`捕获。
- 在`err3`函数的`catch`块中,输出`err3:chtch`,然后继续抛出异常。
- 最终该异常被`main`函数中的`catch(...)`捕获。
- 在`main`函数的`catch`块中,输出`main:catch`。
阅读全文