C# 使用自定义异常表单

C# 使用自定义异常表单,c#,exception-handling,C#,Exception Handling,我目前正在开发一个C WinForm应用程序,并试图创建一个自定义表单,以便在抛出未捕获异常时使用。使用此自定义表单的原因是,能够将每个抛出的异常的详细信息记录在日志文件中,并为用户提供一个外观清晰的GUI,该GUI具有更好、更易于理解的错误详细信息 目前,我正在注册异常事件: Application.ThreadException += new ThreadExceptionEventHandler(ExceptionHandler.OnThreadException); AppDomain.

我目前正在开发一个C WinForm应用程序,并试图创建一个自定义表单,以便在抛出未捕获异常时使用。使用此自定义表单的原因是,能够将每个抛出的异常的详细信息记录在日志文件中,并为用户提供一个外观清晰的GUI,该GUI具有更好、更易于理解的错误详细信息

目前,我正在注册异常事件:

Application.ThreadException += new ThreadExceptionEventHandler(ExceptionHandler.OnThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(ExceptionHandler.OnUnhandledException);
ExceptionHandler类将错误记录在日志文件中,然后显示我的自定义WinForm。我的问题是,这是显示自定义表单的唯一方法吗?我现在知道的一个问题是,我无法确定应用程序是否仍然可以继续,或者是否会在表单关闭时关闭


总的来说,我的问题是。。。是否有更好或更简单的方法来使用我的自定义异常表单?另外,有没有办法知道一旦异常表单关闭,应用程序是否能够恢复?

您应该从退出应用程序开始,因为您没有预料到任何错误。表单是一个很好的触摸,但要注意它可能不起作用,因为你不知道问题是什么-所以用try-catch包装它。然后,当出现错误时,进行一些分析,如果可以从中恢复,则捕获特定异常并进行恢复。通常情况下,如果某个内容一直冒泡到AppDomain.CurrentDomain.UnhandledException,则可能会使应用程序处于不好的位置,您希望关闭该应用程序。

您应该从退出应用程序开始,因为您没有预料到任何错误。表单是一个很好的触摸,但要注意它可能不起作用,因为你不知道问题是什么-所以用try-catch包装它。然后,当出现错误时,进行一些分析,如果可以从中恢复,则捕获特定异常并进行恢复。通常情况下,如果某个程序一直冒泡到AppDomain.CurrentDomain.UnhandledException,它可能会使应用程序处于一个不好的位置,而您希望关闭它。

如果您不了解异常的原因,则继续运行程序是不安全的

此处将更详细地讨论此主题:


如果不了解异常的原因,继续运行程序是不安全的

此处将更详细地讨论此主题:


如果您的应用程序中存在一个您显然不知道可能发生的未经处理的异常,您真的希望用户能够继续使用该应用程序吗?不,但如果出现未经处理的异常,使用更好的GUI和包含异常详细信息的错误日志将有助于我在以后的版本中修复该错误,或者至少能够更好地帮助用户了解错误详细信息SSO,异常在应用程序中是如此非异常,以至于您觉得有必要编写一个奇特的界面来显示它们?为什么不直接将异常数据写入事件查看器并完成处理?如果应用程序中存在未处理的异常,而您显然不知道该异常可能会发生,您真的希望用户能够继续使用该应用程序吗?不,但如果发生未处理的异常,拥有更好的GUI和包含异常详细信息的错误日志将有助于我在以后的版本中修复错误,或者至少能够更好地帮助用户提供错误详细信息。在您的应用程序中,异常是如此非异常,以至于您觉得有必要编写一个奇特的界面来显示它们?为什么不直接将异常数据写入事件查看器并处理它呢?