c# - 捕获所有错误,而不仅仅是单个按钮

标签 c# winforms error-handling

<分区>

我想要一个适用于所有函数的通用捕获所有错误。现在,我尝试捕捉特定事件的每个单独按钮点击。我需要为我的整个程序捕获所有错误,其中包括可以捕获我可能错过的任何个别异常的所有按钮点击。有人能给我指出正确的方向吗

我当前的代码:

private void Show_btn_Click(object sender, EventArgs e)
{
  try
 {
   //do something
 }
 catch (Exception error)
 {
    outputLOG.Append(error.ToString());
 {
}

private void Submit_btn_Click(object sender, EventArgs e)
{
  try
 {
   //do something
 }
 catch (Exception error)
 {
    outputLOG.Append(error.ToString());
 }
}

目标:我想捕获所有按钮以防我错过个别异常

编辑:我正在使用 winforms

最佳答案

在进入应用程序的第一个表单之前添加这些行(通常在 program.cs 的 main 方法中)

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
......

private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
    string msg = e.Exception.Message;
    if (e.Exception.InnerException != null)
    {
        msg = msg + "\r\nPrevious error:" + e.Exception.InnerException.Message;
    }
    msg = msg + "\r\n\r\nDo you wish to continue with the application?";
    DialogResult dr = MessageBox.Show(msg, "Exception", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (dr == DialogResult.No) Application.Exit();
}

private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if (ex != null)
    {
        string msg = ex.Message;
        if (ex.InnerException != null)
        {
            msg = msg + "\r\nPrevious error :" + ex.InnerException.Message;
        }
        msg = msg + "\r\n\r\nIt is not possible to continue. Contact support service!";
        MessageBox.Show(msg, "Fatal Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

关于c# - 捕获所有错误,而不仅仅是单个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20791793/

相关文章:

html - 验证失败,但是我找不到错误原因

c# - "The remote server returned an error: (417) Expectation Failed."

c# - 需要考虑的应用安全问题

c# - IQueryable<a> 到 ObservableCollection<a> 其中 a = 匿名类型

c# - 错误 :-(Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

c# - 如何禁用 ListView 中的单选按钮

php - Laravel 返回 HttpException 对象而不是显示自定义错误页面

c# - 确定消息在 Azure 主题上出现的次数

c# - 如何使 WPF 菜单看起来像 Windows 窗体 ToolStripMenu?

apache - 是可执行文件可靠地返回的ERRORLEVEL,可用于批处理脚本中的错误处理