gil*_*gil 10 c++ exception-handling try-catch
在C++中,我试图在一个catch中捕获所有类型的异常(比如catch(Exception)在C#中).怎么做?更重要的是,如何才能捕获除零例外?
Ash*_*Ash 24
catch (...)
{
// Handle exceptions not covered.
}
Run Code Online (Sandbox Code Playgroud)
重要注意事项
Car*_*org 14
你不希望使用捕捉(...)(即捕获与省略号),除非你真的,绝对,最可证明有需要它的人.
这样做的原因是一些编译器(Visual C++ 6命名最常见)也会将分段错误和其他非常糟糕的条件等错误转换为您可以使用catch(...)高兴地处理的异常.这非常糟糕,因为你再也看不到崩溃了.
从技术上讲,是的,你也可以将零除(你必须为"StackOverflow"),但你真的应该避免首先进行这样的划分.
相反,请执行以下操作:
如果您在Windows上并且需要处理除以零和访问冲突等错误,则可以使用结构化异常转换器.然后在你的翻译器内你可以抛出一个c ++异常:
void myTranslator(unsigned code, EXCEPTION_POINTERS*)
{
throw std::exception(<appropriate string here>);
}
_set_se_translator(myTranslator);
Run Code Online (Sandbox Code Playgroud)
注意,代码会告诉你错误是什么.您还需要使用/ EHa选项进行编译(C/C++ - > Code Generatrion - >使用SEH异常启用C/C++异常=是).
如果这没有意义,请查看[_set_se_translator]的文档(http://msdn.microsoft.com/en-us/library/5z4bw5h5(VS.80).aspx)
| 归档时间: |
|
| 查看次数: |
15444 次 |
| 最近记录: |