在我的C ++应用程序中,我正在调用System(),有时会崩溃应用程序(这是一项服务)。我想捕获抛出的异常并记录它。不过,我不知道到底要抓什么,我甚至不能做一揽子:
try
{
system(myCommand);
}
catch (...)
{
Log("Error!"); // this is a custom log method
}
这不会记录任何内容。不应该抓住每种类型的例外吗?更重要的是,我如何知道System()方法将抛出什么才能让我知道要捕获什么?
答案 0 :(得分:9)
如果catch(...)
没有捕获异常,则不会抛出异常。并非所有错误都会引发异常system
是C时代的遗留物,绝对不会引起任何例外。
答案 1 :(得分:1)
“Log”使用哪些功能?根据您遇到的故障,它可能会干扰您的日志记录功能。通常,崩溃记录应该从单独的过程完成。
答案 2 :(得分:1)
您应该检查System()
调用的文档,以检查它是否定义了exception specification
以及它可以抛出的异常。但似乎从(...)
抓住所有似乎都不适合你,大多数System()
根本没有抛出任何例外。您可以签入以跟踪日志或调试器日志,以查看System()
呼叫期间出现的问题。
答案 3 :(得分:0)
try / catch仅捕获C ++异常,它不捕获所有异常(即SEH类型异常)。如果您确定该服务正在通过该呼叫崩溃,并且这是在Windows上,您可能希望尝试使用Structured Exception Handling。
答案 4 :(得分:0)
你可以捕获SEH和c ++异常,HTH。