草庐IT

SomeKindOfException

全部标签

c++ - 堆栈上分配的异常如何超出其范围?

在下面的代码中,基于堆栈的变量'ex'被抛出并捕获在一个超出ex声明范围的函数中。这对我来说似乎有点奇怪,因为(AFAIK)基于堆栈的变量不能在声明它们的范围之外使用(堆栈已展开)。voidf(){SomeKindOfExceptionex(...);throwex;}voidg(){try{f();}catch(SomeKindOfException&ex){//Handlingcode...}}我在SomeKindOfException的析构函数中添加了一个print语句,它表明ex一旦超出f()的范围就会被破坏,但是它会在g()中被捕获并在超出范围时再次被破坏.有什么帮助吗?

c++ - 堆栈上分配的异常如何超出其范围?

在下面的代码中,基于堆栈的变量'ex'被抛出并捕获在一个超出ex声明范围的函数中。这对我来说似乎有点奇怪,因为(AFAIK)基于堆栈的变量不能在声明它们的范围之外使用(堆栈已展开)。voidf(){SomeKindOfExceptionex(...);throwex;}voidg(){try{f();}catch(SomeKindOfException&ex){//Handlingcode...}}我在SomeKindOfException的析构函数中添加了一个print语句,它表明ex一旦超出f()的范围就会被破坏,但是它会在g()中被捕获并在超出范围时再次被破坏.有什么帮助吗?