[英]How do I catch a C++ exception?
在我的C ++应用程序中,我正在调用System(),这有时会使应用程序崩溃(这是一项服务)。 我想捕获引发的异常并将其记录下来。 我不知道该抓什么,我什至也不能一口气抓:
try
{
system(myCommand);
}
catch (...)
{
Log("Error!"); // this is a custom log method
}
那没有记录任何东西。 那不应该捕获所有类型的异常吗? 更重要的是,我如何知道System()方法将抛出什么,以便使我知道要捕获什么?
如果catch(...)
没有捕获异常,则不会引发异常。 并非所有错误都会引发异常。 从C时代起, system
就一直处于停滞状态,并且绝对不会引发任何异常。
“日志”使用什么功能? 根据您遇到的故障,它可能会干扰您的日志记录功能。 通常,崩溃日志记录应从单独的过程完成。
您应该检查System()
调用的文档,以检查它是否定义了exception specification
也可以定义抛出什么异常。 但是似乎因为(...)
捕获所有内容似乎对您不起作用,所以大多数System()
根本不会引发任何异常。 您可以签入以跟踪日志或调试器日志,以查看在System()
调用期间出了什么问题。
try / catch仅捕获C ++异常,而不捕获所有异常(即SEH类型的异常)。 如果确定该调用使该服务崩溃,并且在Windows上,您可能想尝试使用结构化异常处理 。
您可以同时捕获SEH和c ++异常,即HTH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.