在另一个问题中,有人建议使用catch(...)
来捕获所有未处理的异常,即围绕整个main()
放置try{}catch(...){}
块。
这听起来是一个有趣的想法,可以节省大量调试程序的时间,并留下至少一些发生了什么的提示。
问题的关键是通过这种方式可以恢复哪些信息(除了我留下的任何调试全局变量),以及如何恢复它(如何访问和识别使用了哪个catch)
此外,还有哪些注意点。特别是:
- 它会与后来出现的线程相容吗?
- 它不会破坏处理段错误(在其他地方被捕获为信号)的能力吗?
- 它不会影响到必然嵌套在内部以处理预期异常的其他try...catch块吗?
throw;
结尾我的 catch 块会怎样?无论如何,当SEH发生时,除了进入SEH递归(然后看门狗就会杀死我),不会发生更坏的情况。 - SF./EHa
),但默认情况下未开启。 - JoeG