c++ - __try/__except block 或 try/catch block 哪个更好用?

标签 c++ c performance exception try-catch

我想知道捕获我抛出的异常的更好方法是:它是 __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/

相关文章:

c++ fopen 正在返回一个文件 * 带有 <bad ptr> 的

c++ - 本地声明的对象的内部内存在范围外完好无损?

java - 为什么 long 在 x64 Java 中比 int 慢?

python - Cython 使用 prange/parallel 没有性能提升

c++ - CRTP 基本构造函数崩溃,因为未构造子项

c++ - 类定义中的静态数据成员初始化?

python - 与 Project Euler : C vs Python vs Erlang vs Haskell 的速度比较

kernel - 在执行期间访问 .eh_frame 数据

c - 从文件中读取数字(整数)并将其存储为二维数组

javascript - React js 性能工具插件抛出 "Cannot read property ' 未定义的计数”