请告诉我throw语句之后是否执行了任何内容。
例如,在下面的代码中,如果不执行“10//0”,为什么IDE会引发错误?
void check_exception()
{
char a = 'A';
char b = 'B';
try
{
if (a == 'A')
throw "Hello";
cout << "\nLet's check if this line is printed or not";
cout << "\nB is : " << b << " A has been thrown : " << 10/0;
}
catch (const char* check)
{
cout << "\n\nReceived exception " << check;
}
}
3条答案
按热度按时间njthzxwz1#
如果
throw
之后的代码被调用,那么它就不应该被执行,唯一的例外是如果有一个合适的catch
,那么它就会被执行。C#也是如此。无论如何,你不应该直接在try/catch
块中执行throw
。r7knjye22#
因为throw语句将搜索匹配的catch异常,所以没有输出任何内容,throw语句后面没有execute语句,我认为您必须将catch更改为:
(char const* s)
或(const char [])
或类似的内容...我不记得了,但如果您需要,我可以在今天晚上为您搜索它...我已经检查了相同的catch异常wvt8vs2t3#
请告诉我throw语句之后是否执行了任何内容。
明确声明:没有。
例如,在下面的代码中,如果不执行"10//0",为什么IDE会引发错误?
IDE只是警告您一个明显的bug,它没有做任何控制流分析,只是在生成代码时看到了bug。