如何处理c#程序中未处理的异常



我正在用c#写一个程序,我刚刚开始使用Exception。我以前做过Java,但我试图不惜任何代价避免异常。我现在明白我不能再逃避了。所以我需要一些建议。我有一个这样的代码:

try
{
    //...
}
catch
{
    //...
}
//...
try
{
    //...
}
catch
{
    //...
}

这是一个GUI程序。我想这样做,如果捕获异常,程序将基本上停止所有操作,但不会关闭程序,因此GUI仍然存在,用户可以对发现的问题进行更改。

顺便说一句:我们的讲师会让我们多次失败,所以建议是行不通的

可以定义一个处理程序来捕获所有未处理的异常。确切的机制取决于你正在使用的UI框架。

对于WinForms,你可以这样做

AppDomain.CurrentDomain.UnhandledException += new 
    UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// Windows forms exceptions handler
Application.ThreadException += new 
    ThreadExceptionEventHandler(Application_ThreadException);
http://kenneththorman.blogspot.com/2010/10/windows-forms-net-handling-unhandled.html

对于WPF,您可以这样做

<Application x:Class="UnhandledExceptionHandler.App"
    DispatcherUnhandledException="Application_DispatcherUnhandledException">
</Application>
private void Application_DispatcherUnhandledException(object sender, 
                       System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
    // Handle the exception
}
http://www.codeproject.com/Articles/90866/Unhandled-Exception-Handler-For-WPF-Applications

以防Eric J。答案太复杂了:

我认为,由于您的prof只允许一个返回语句,因此您将拥有类似服务的东西,该服务执行某些工作并通知调用者状态和可能的错误消息。

如果你可以通过布尔消息,那么以下应该为你工作:

public class Service
{
  public bool DoWork()
  {
    bool success = false;
    try
    {
      //code to do work
      success = true;
    }
    catch(Exception ex)
    {
      //do something with the ex
      success = false;
    }
    return success;
    }
}

相关内容

  • 没有找到相关文章

最新更新