`
jiasongmao
  • 浏览: 679646 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

C#_WinForm捕获未处理的异常

    博客分类:
  • .NET
 
阅读更多

像QQ那样,当程序出现崩溃强制退出之前,捕获该异常,跳出友好界面进行提示。只需在Program.cs 里加相关代码即可实现,全局任何一个点出现崩溃,都将在这里被捕获。

 

static class Program
{
   /// <summary>
   /// 应用程序的主入口点。
   /// </summary>
  [STAThread]
  static void Main()
  {
     try
     {
         //处理未捕获的异常   
          Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
         //处理UI线程异常   
          Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
         //处理非UI线程异常   
          AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
                
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         Application.Run(new frmlogin());
     }
     catch(Exception ex)
     {
         frmBug f = new frmBug(ex.Message);//友好提示界面
          f.ShowDialog();
     }

  }
        
  static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)   
  {
      string str = "";
      Exception error = e.Exception as Exception;   
      if (error != null)   
      {   
          str =string.Format("出现应用程序未处理的异常\n异常类型:{0}\n异常消息:{1}\n异常位置:{2}\n",   
               error.GetType().Name, error.Message, error.StackTrace);    
      }   
      else  
      {   
          str =string.Format("应用程序线程错误:{0}", e);   
      }
      frmBug f = new frmBug(str);//友好提示界面
       f.ShowDialog();
   }   
  
   static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)   
   {
      string str = "";
      Exception error = e.ExceptionObject as Exception;   
      if (error != null)   
      {   
         str =string.Format("Application UnhandledException:{0};\n堆栈信息:{1}", error.Message, error.StackTrace);   
      }   
      else  
      {   
         str =string.Format("Application UnhandledError:{0}", e);   
      }
      frmBug f = new frmBug(str);//友好提示界面
       f.ShowDialog();
   }  
}

 

分享到:
评论

相关推荐

    winform捕捉全局异常_winform_

    这个事件在应用程序主线程上发生未处理异常时触发。我们需要在`Program.cs`文件的`Main`方法中订阅此事件: ```csharp static class Program { [STAThread] static void Main() { // 订阅ThreadException...

    Windows_C#_Winform_计算器

    你需要添加适当的错误处理代码,如try-catch块,来捕获并处理这些异常。 7. **用户界面设计**:良好的用户体验是任何应用的关键。在设计计算器界面时,要考虑到布局的合理性、控件的大小和位置,以及颜色和字体的...

    C#_Winform源码Socket客户端

    因此,需要对可能出现的SocketException或其他异常进行捕获和处理,以确保程序的健壮性。 6. **异步编程**: - 为了提供更好的用户体验,Winform客户端通常使用异步操作来处理网络通信。例如,可以使用`...

    C# WinForm捕获未处理的异常实例解析

    本文以一个完整的实例形式讲述了C# WinForm捕获未处理的异常的方法。分享给大家供大家参考之用。具体代码如下: using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; ...

    C#_Winform_半透明面板.rar

    在.NET框架中,C#是一种常用的...总结来说,实现C# Winform的半透明面板涉及了自定义控件、GDI+绘图、Windows API调用和窗体事件处理。通过这些技术,我们可以创建出美观且交互性强的用户界面,增强应用的用户体验。

    c#.rar_c# winform 文件存储_winform

    2. **异常处理**:进行文件操作时,可能遇到诸如文件不存在、权限不足等问题,因此需要捕获并处理异常。 六、文件对话框 1. **OpenFileDialog/SaveFileDialog组件**:WinForm中,这两个组件可以让用户选择要打开或...

    C#winform 全局错误捕捉 可以让错误跳过去继续执行住程序

    首先,我们需要理解在C#中处理异常的基本概念。异常是在程序执行过程中发生的错误,当出现异常时,会触发一个异常对象。通过使用`try-catch`块,我们可以捕获并处理这些异常。然而,这种处理方式通常局限于特定的...

    asny.rar_c# asny_winform

    `try-catch`块应适当地用于捕获和处理异常。 9. **进度更新与取消支持**:为了提供更好的用户体验,异步操作可能提供了进度报告和取消操作的功能,如`Progress&lt;T&gt;`类和`CancellationToken`。 10. **设计模式**:如...

    198个经典C#WinForm实例源码(超赞).rar_198个经典csharp_WinformQQ源码_c# winform源

    13. **异常处理**:正确捕获和处理程序运行时可能出现的异常,保证程序的健壮性。 通过学习并实践这些实例,你可以深入理解C# WinForm编程的基本原理和技巧,提升你的编程技能。无论是为了快速上手C# WinForm开发,...

    C# WinForm捕获全局变量异常 SamWang解决方法

    总结来说,C# WinForm捕获全局变量异常的关键在于正确地订阅和处理`ThreadException`和`UnhandledException`事件,以及编写一个自定义的异常处理逻辑,这将极大地增强程序的健壮性和用户体验。记得在项目完成后,...

    钩子_钩子_winform_properp2s_

    标题中的“钩子_钩子_winform_properp2s_”表明这是一个关于Windows Forms(WinForm)应用程序中使用钩子技术(Hook)的项目,可能涉及到编程语言C#或VB.NET,因为WinForm通常与.NET Framework关联。"Properp2s"可能...

    winform_c#_多线程例子

    4. **异常处理**:后台线程中的异常不会自动抛出到UI线程,所以开发者需要在`DoWork`事件处理程序中捕获异常,并通过`ProgressChanged`事件将异常信息传递回主线程进行处理。 5. **进度报告和取消支持**:...

    utf8''WxPay_VS2005_WINFORM.zip

    此外,"WxPay_VS2005_WINFORM"项目中还可能包含了错误处理和异常捕获的代码,这对于确保支付流程的稳定性和用户体验至关重要。在实际开发中,你可能会遇到网络异常、参数错误、签名验证失败等问题,因此要具备良好的...

    winform 对异常的处理源码

    // 处理异常,例如显示错误对话框 MessageBox.Show("发生了一个错误:" + e.Exception.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } ``` 另外,Global.asax文件在Web应用程序中起着类似的...

    C#实现Winform实现区域截屏

    在本文中,我们将深入探讨如何使用C#编程语言在Windows Forms(Winform)环境中实现一个区域截屏功能。首先,我们需要了解Winform的基本概念,它是.NET Framework中的一个库,用于构建桌面应用程序,提供了丰富的...

    198个经典C_WinForm实例源码(超赞)

    C#使用try-catch-finally语句块来捕获和处理可能出现的错误。 这些实例源码涵盖了上述多个方面,通过学习和分析这些代码,开发者可以深入理解C# WinForm编程的基本原理和高级特性,并提升实际项目开发能力。每个...

    Jessica_winform_

    在本文中,我们将深入探讨C# WinForm桌面应用程序开发中的动画和鼠标控制技术。"Jessica_winform_"项目可能是一个示例工程,展示了如何在WinForm应用中实现动态效果,并允许用户通过鼠标进行交互。 首先,让我们...

    c__winform实现网页上用户自动登陆,模拟网站登录

    5. **处理异常**:在整个过程中,应捕获并处理可能出现的任何异常,如网络问题或服务器错误。 ### 四、注意事项 - **安全性**:在处理用户名和密码时,应采取适当的加密措施,避免明文存储或传输敏感信息。 - **...

    c#_良田高拍仪_良田_C#_c#高拍仪_carjn8_

    7. **错误处理**:确保代码能够正确处理可能出现的错误,如设备未连接、拍摄失败等。 8. **测试与优化**:进行详尽的测试,确保在各种条件下软件都能稳定运行,并根据性能需求进行优化。 9. **用户界面设计**:...

Global site tag (gtag.js) - Google Analytics