【发布时间】:2011-10-16 19:41:25
【问题描述】:
在 Stack Overflow 上已经有一些关于这个主题的非常好的主题,但似乎并没有一个简洁的答案。我的 C# 控制台应用程序(作为 Windows 服务运行)启动 Java 进程并对其进行管理(启动/停止/重新启动它),但我的问题是我将远程进入机器,并且有时会看到它启动了大约 20 个 Java 进程。
这显然是我的应用程序在某些时候崩溃的问题,并且没有关闭它启动的 Java 进程。我在 AppDomain.CurrentDomain 中挂上了“UnhandledExceptionEventHandler”,并从中调用 TerminateProcess()(关闭活动的 Java 进程),但这个问题仍然偶尔发生。
我的应用程序有一个主线程、一个 TCP 服务器线程(它接受异步连接)和一个 UDP 服务器线程。在 UnhandledException 之上还有什么我应该挂钩的吗?
编辑
我还突然想到,我的代码中有一些 Try/Catch 块,它们只是写入控制台,而我从未见过。我应该删除这些以便它们被 UnhandledException 捕获还是在那里添加一个记录器?
【问题讨论】:
-
这是 a) Winforms 应用程序,b) WPF 应用程序,c) 控制台应用程序,d) ASP.NET Web 应用程序吗?这些类型之间的异常处理(在“全局”范围内)完全不同 - 知道您的应用程序是哪一个至关重要。
-
回复:您的编辑 - 一般建议是:如果您无法从异常中恢复,请让它冒泡,或者记录并重新抛出它。不要吞下异常,也不要编写实际上不处理异常情况的 catch 块。
-
作为服务运行的控制台应用程序,抱歉。
-
梅林,如果你想回答我会接受,谢谢!如何从 catch 块中重新抛出异常?
-
只有一个
thow会重新抛出。
标签: c# .net try-catch custom-exceptions