![]() |
1
10
是的,这是个好主意。 如果让一个异常从MAIN逸出,那么它就是实现定义的,在应用程序关闭之前堆栈将被释放。所以,在我看来,基本上你要抓住所有的例外。
然后问题就变成了如何处理它们。
它应该不会影响线程。通常,您必须手动联接任何子线程,以确保它们已退出。当主出口没有很好地定义时,子线程会发生什么的确切细节(因此请阅读文档),但通常所有子线程都会立即死亡(这是一种不涉及展开它们的堆栈的严重而可怕的死亡)。 如果您正在讨论子线程中的异常。同样,这并没有很好的定义(所以请阅读您的文档),但是如果一个线程通过一个异常(即用于启动线程的函数由于一个异常而不是返回而退出),那么这通常会导致应用程序终止(与上面相同的影响)。所以最好停下来 所有 退出线程时出现异常。
信号不受异常处理机制的影响。
对其他处理程序没有影响。 |
![]() |
2
4
据我所知,
因此,我的建议是使用一个基本异常类(例如
|
![]() |
3
3
全局Try-Catch块对于生产系统很有用,以避免向用户显示不好的消息。在开发过程中,我认为最好避免这种情况。 关于你的问题:
|
![]() |
4
1
你可以试试
a solution I use
如果您正在制作.NET应用程序。捕获所有未处理的异常。我通常只启用代码
值得指出的是,正如Kgianakakis提到的,您不能在其他线程中捕获异常,但是您可以在这些线程中使用相同的Try-Catch方案,并将异常发回主线程,在主线程中您可以重新抛出异常,以获得错误的完整堆栈跟踪。 |
![]() |
5
0
由于没有可以查询的类型/对象信息,因此“全部捕获”不会非常有用。但是,如果你能确定 全部的 应用程序引发的异常是从单个基对象派生的,您可以为基异常使用catch块。但那不是什么好事。 |
![]() |
6
0
如果您的意思是如何恢复抛出的异常类型,则可以在返回到之前为特定类型(从更具体到更一般)链接catch块
请注意,如果您发现自己在多个地方执行此操作并希望合并代码(可能是多个
|