Yip*_*Yay 7 c++ exception handler
如果出现未处理的异常,C++是否提供了一种"显示"可视化内容的方法?
我想做的是做一些事情,assert(unhandled exception.msg())如果它真的发生(如下面的例子):
void foo() {
   throw std::exception("Message!");
}
int main() {
 foo();
}
我希望这种代码不会立即终止(因为异常未处理),而是显示自定义断言消息(Message!实际上).
那可能吗?
Log*_*ldo 11
标准没有指定实际显示未捕获异常的消息.但是,在许多平台上,无论如何都是可能的.在Windows上,您可以使用SetUnhandledExceptionFilter并提取C++异常信息.使用g ++(无论如何适当的版本),终止处理程序可以使用以下代码访问未捕获的异常:
   void terminate_handler()
   {
       try { throw; }
       catch(const std::exception& e) { log(e.what()); }
       catch(...) {}
   }
事实上,g ++的默认终止处理程序做了类似的事情.您可以使用set_terminate设置终止处理程序.
简而言之,没有通用的C++方式,但有些方法取决于您的平台.
我认为您将从如下的包罗万象的声明中受益:
int main() {
 try {
   foo();
 catch (...) {
   // Do something with the unhandled exception.
 }
}