如果特定类型的异常在 c++ 中没有与该异常对应的 catch 块,会发生什么情况



对于下面给出的代码。代码将如何行为以及为什么?

    // code goes here..
    try { 
         if(a==0) throw "a is 0";
    }
    catch(int a) { ; }
    a = 19;
    //code goes here.....

由于您正在抛出一个字符串(又名 const char* (,但您只捕获了 int 类型的值,因此不会捕获异常并将继续展开函数堆栈,直到它找到愿意捕获您的异常的 try 块或它到达main并中止您的程序。

也就是说,如果您的 catch 块没有捕获抛出的异常类型,就好像它不存在一样。

最新更新