相关疑难解决方法(0)

Visual C++非托管代码:使用/ EHa或/ EHsc进行C++异常?

如果我在非托管C++,Visual Studio 2008或更高版本中创建一个新项目,我想要使用哪种异常处理模型?

我知道/ EHa选项导致代码效率降低,并且还会捕获SEH异常,对吧?

所以我一直在转向那个选项,并且通常使用/ EHsc,因此我只捕获实际抛出的C++异常,而不是捕获访问冲突和其他结构化的execse,在catch(...)处理程序中.如果我的代码中存在访问冲突,我不希望它被catch(...){}掩盖.

我和其他想要捕获(...){}的人一起编写代码,如果存在访问冲突,他们甚至希望它这样做,这对我来说似乎是一个非常糟糕的主意.如果由于编码错误而导致错误,您不想将手指伸入耳中并大声说"La la la la la!" 这样你就不必让程序崩溃了?事实上,如果代码由于编码错误现在处于错误状态,您真的希望代码继续吗?

所以我的一般想法是/ EHa创建更大/更慢的代码并且它允许程序员逃避编写代码,如果存在致命错误,它将继续以未定义状态运行.

顺便说一下,我说的是应用程序和服务代码,这是我们大部分时间写的.不是低级设备驱动程序或类似的东西.

请考虑一下你的想法.

c++ exception seh access-violation visual-studio-2008

16
推荐指数
2
解决办法
1万
查看次数

处理几乎所有C++中的异常

我有一个try块,它目前捕获所有异常:

try
{
    // do some work
}
catch (std::exception &ex)
{
    // log ex
}
Run Code Online (Sandbox Code Playgroud)

但是,我不想捕获访问冲突.我可以将其指定为我的处理程序的异常(可以这么说)吗?或者我应该先抓住它并重新抛出它?

c++ exception-handling c++98

0
推荐指数
1
解决办法
85
查看次数