我想知道捕获我抛出的异常的更好方法是:它是 __try/__except block 还是 try/catch block ?
我是用 C++ 编写的,该程序只能在 Windows 上使用,所以可移植性不是问题。
谢谢!
最佳答案
它们是两个非常不同的东西。 try/catch 是您熟悉的 C++ 关键字。 __try/__except
用于捕获 SEH 异常。 Windows 本身引发的异常,例如 DivisionByZero 或 AccessViolation。 MSDN Library article 中有详细描述。为它。
您还可以使用它来捕获 C++ 异常,因为它利用了 Windows SEH 功能。但是,您无法从中获取抛出的异常对象,因此如果您确实想要处理异常,则上下文为零。这是疯狂。第一种方法是永远不要捕获 SEH 异常,它们总是很严重。如果您确实需要将两者结合起来,请使用 _set_se_translator() 将 SEH 异常转换为 C++ 异常。
关于c++ - __try/__except block 或 try/catch block 哪个更好用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730654/