我可以得到捕获的异常的描述吗
catch(...)
堵塞?就像是.what()std::异常。
您可能可以使用一个技巧:
catch(...) {
handle_exception();
}
void handle_exception() {
try {
throw;
} catch (const std::exception &e) {
std::cout << e.what() << "\n";
} catch (const int i) {
std::cout << i << "\n";
} catch (const long l) {
std::cout << l << "\n";
} catch (const char *p) {
std::cout << p << "\n";
} catch (...) {
std::cout << "nope, sorry, I really have no clue what that is\n";
}
}
等等,您认为可能会抛出尽可能多的不同类型。如果你真的不知道可能会抛出什么,那么即使是倒数第二个也是错误的,因为有人可能会抛出一个char*
它不指向以 null 结尾的字符串。
扔掉任何不是东西的东西通常是个坏主意std::exception
或派生类。原因std::exception
存在的目的是让每个人都可以投掷和捕捉可以做一些有用的事情的物体。在一个玩具程序中,您只想离开那里,甚至懒得包含标准标头,好吧,也许会抛出一个int
或字符串文字。我认为我不会将其作为正式界面的一部分。您抛出的任何异常都是正式界面的一部分,即使您以某种方式忘记记录它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)