棘手的问题,谁知道是否可以在 func3 中捕获 MyException1?
#include <iostream>
class MyException1: public std::exception {
public:
virtual const char* what() const throw()
{
return "Error1";
}
};
class MyException21: public std::exception {
public:
virtual const char* what() const throw()
{
return "Error21";
}
};
class MyException22: public std::exception {
public:
virtual const char* what() const throw()
{
return "Error22";
}
};
void func1(){
throw MyException1();
}
void func2(){
throw MyException1();
}
void func12(){
try {
func1();
}catch (MyException1& exception1){
throw MyException21();
}
}
void func22(){
try {
func2();
}catch (MyException1& exception1){
throw MyException22();
}
}
void func3(){
try {
func12();
func22();
}catch (MyException1& exception1){
std::cout<<exception1.what(); // Вот здесь должно выводиться "Error1"
}catch (MyException21& exception21){
std::cout<<exception21.what(); // Но выводится "Error21", что логично, но как вот весь стек ошибок перехватить, т.е. MyException1 тоже?
}
}
int main() {
func3();
return 0;
}
您没有任何异常堆栈。该函数改为
func12();
捕获MyException1
并抛出。MyException21
不。
MyException21
如果需要,将其(或其中的信息)放入其中。