C++ 当有多个程序时,重播是如何工作的?
这个程序没有给出我期望的输出C++ 当有多个程序时,重播是如何工作的?,c++,exception-handling,C++,Exception Handling,这个程序没有给出我期望的输出 根据我对C++中的重发的理解,它应该执行程序的下一个catch块,但它不执行catch块,而是执行下一个程序。改头换面实际上是做什么的 它给出的输出是“intcatch”,但我希望它输出“intcaughtcatch”。我的推理有什么问题 #include <iostream> using namespace std; template <class t> void sign(t a) { try { throw
根据我对C++中的重发的理解,它应该执行程序的下一个catch块,但它不执行catch块,而是执行下一个程序。改头换面实际上是做什么的
它给出的输出是“intcatch”,但我希望它输出“intcaughtcatch”。我的推理有什么问题#include <iostream>
using namespace std;
template <class t>
void sign(t a) {
try {
throw a;
} catch (int i) {
cout << "int";
throw;
}
}
main() {
try {
sign<int>(1);
sign<int>('1');
} catch (...) {
cout << "caught";
}
}
#包括
使用名称空间std;
模板
无效标志(t a){
试一试{
扔一个;
}捕获(int i){
cout符号('1');
(如果是,则根据平台上的字符编码,char
literal'1'
将转换为int
)
这是因为之后的抛出;
请注意,我在第二次调用中也更改了模板参数,否则您的“int”
输出将再次显示。尝试使用调试器,它非常适合处理此类问题。我试图澄清您的语言,但我不确定“程序”是什么意思所以我无法完全澄清。你能解释一下“程序”是什么意思吗?“它正在执行下一个程序”下一个程序是什么?main
需要返回类型。要回答问题的标题,所有异常处理都是程序本地的。如果main未捕获异常,则操作系统将捕获。与多个或其他程序无关。
try {
sign<int>(1);
sign<int>('1');
} catch (...) {
cout << "caught";
}
try {
sign<int>(1);
} catch (...) {
cout << "caught";
}
try {
sign<char>('1');
} catch (...) {
cout << "caught";
}