对于下面给出的代码。代码将如何行为以及为什么?
// 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 块没有捕获抛出的异常类型,就好像它不存在一样。