gpt4 book ai didi

c++ - 孤立代码块在结构中抛出异常

转载 作者:行者123 更新时间:2023-11-30 04:55:14 26 4
gpt4 key购买 nike

我最近在一次采访中被问到这个问题。在代码下方,询问了片段行为。我提到代码会抛出一个会被捕获的异常,但它并不是正确的答案。

我试过调试这段代码片段,但有两个问题。

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);
}

最佳答案

你所说的“孤立代码”实际上是一个function try block .当与构造函数和析构函数一起使用时,此类 block 具有特殊行为:每个 catch block 都会隐式地重新抛出异常,就好像最后一条语句是 throw; 一样。这样做是为了使无法使用未能完成构建的对象。

关于c++ - 孤立代码块在结构中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53127766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com