【发布时间】:2018-11-03 02:06:37
【问题描述】:
我最近在一次采访中被问到这个问题。在下面的代码中,询问了 sn-p 行为。我提到代码会 抛出一个会被捕获但结果不是正确答案的异常。
我试过调试这段代码sn-p,有两个问题。
1。 如果执行确实进入该行 try { A a; } 那为什么 catch 无法捕获异常呢?
2。 这段不属于结构内任何方法的孤立代码的行为是什么?如果我把孤儿代码 包含在 B 的构造函数方法下,即在 B() { } 中,然后正确捕获异常。那么执行如何 流量处理这个?我的意思是B中try catch的孤儿代码属于哪个方法/函数栈?
#include<iostream>
#include<string>
using namespace std;
struct A
{
A()
{
throw 2;
}
};
struct B
{
B()
// start of orphan code.
try
{
A a;
}
catch(int i)
{
cout << i << endl;
}
// end of orphan code.
};
int main(int argc, char* argv[])
{
B b;
cout << "3" << endl;
return(0);
}
【问题讨论】: