【发布时间】:2020-11-19 08:01:10
【问题描述】:
所以我在link 中阅读了有关函数 try 块的信息。并且有一行描述了普通 try 块和函数 try 块之间的区别,像这样
与允许您解决异常、抛出新异常或重新抛出现有异常的普通 catch 块不同,对于函数级 try 块,您必须抛出或重新抛出异常
但后来我尝试编写一个这样的函数 try 块
#include <iostream>
int add(int a, int b) try {
throw 1;
return a + b;
}
catch (int) {
std::cout << "catch in add()";
}
int main()
{
try {
add(1, 2);
}
catch (int) {
std::cout << "catch in main()";
}
}
输出是
catch in add()
如果函数 try 块不允许我们解决异常,那么 catch in main() 怎么没有被打印出来
【问题讨论】:
-
某样东西网上C++教程质量普遍偏低。
-
我在标准中找不到任何说明不允许函数 try 块“解决”异常的内容。 Learncpp 的准确性并不为人所知。
-
代码正常从
add返回,不返回结果(或抛出异常)这是UB。
标签: c++ function try-catch main function-try-block