GVKun编程网logo

c# – 无法捕获Winforms中的未处理异常(exceptionhandler无法捕获异常)

15

在本文中,我们将带你了解c#–无法捕获Winforms中的未处理异常在这篇文章中,我们将为您详细介绍c#–无法捕获Winforms中的未处理异常的方方面面,并解答exceptionhandler无法捕

在本文中,我们将带你了解c# – 无法捕获Winforms中的未处理异常在这篇文章中,我们将为您详细介绍c# – 无法捕获Winforms中的未处理异常的方方面面,并解答exceptionhandler无法捕获异常常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的android 自定义全局未处理异常捕获器、ASP.NET Webforms中的异常处理、asp.net – WinForms和Asp的类库中的异常处理、asp.net捕获全局未处理异常的几种方法

本文目录一览:

c# – 无法捕获Winforms中的未处理异常(exceptionhandler无法捕获异常)

c# – 无法捕获Winforms中的未处理异常(exceptionhandler无法捕获异常)

我正在尝试捕获C# Windows窗体应用程序中的所有未经处理的异常.我已将以下代码添加到Program.cs文件中,但未捕获异常,我得到NullReferenceException等异常.
我究竟做错了什么?

static void Main()
{ 
    System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnGuiUnhandedException);
    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
    var form = new MainForm();
    form.ShowDialog();
}

private static void HandleUnhandledException(Object o)
{
    // Todo: Log it!
    Exception e = o as Exception;
    if (e != null)
    {
    }
}

private static void OnUnhandledException(Object sender,UnhandledExceptionEventArgs e)
{
    HandleUnhandledException(e.ExceptionObject);
}

private static void OnGuiUnhandedException(object sender,System.Threading.ThreadExceptionEventArgs e)
{
    HandleUnhandledException(e.Exception);
}

编辑:我能够在Visual Studio外部运行程序时捕获异常,但是当从visual studio进行调试时我无法捕获Exception.我知道调试是为了删除错误.我应该在构建模式下运行程序来捕获异常?

解决方法

尝试在VS中禁用异常捕获,因为它似乎在它到达处理程序之前捕获异常.

调试>例外……>取消选中用户未处理的公共语言运行时异常.

android 自定义全局未处理异常捕获器

android 自定义全局未处理异常捕获器

1:异常处理捕获类

 

package com.oa.main.common.tool;

import android.content.Context;
import android.util.Log;

/**
 * 自定义全局未处理异常捕获器
 * Created  on 13-12-13.
 */
public class CrashHandler implements Thread.UncaughtExceptionHandler {


    private static CrashHandler instance;  //单例引用,这里我们做成单例的,因为我们一个应用程序里面只需要一个UncaughtExceptionHandler实例

    private CrashHandler() {
    }

    public synchronized static CrashHandler getInstance() {  //同步方法,以免单例多线程环境下出现异常
        if (instance == null) {
            instance = new CrashHandler();
        }
        return instance;
    }

    public void init(Context ctx) {  //初始化,把当前对象设置成UncaughtExceptionHandler处理器
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    public void uncaughtException(Thread thread, Throwable ex) {  //当有未处理的异常发生时,就会来到这里。。
        Log.d("----------------捕获异常-------------!", "uncaughtException, thread: " + thread
                + " name: " + thread.getName() + " id: " + thread.getId() + "exception: "
                + ex);
        String threadName = thread.getName();
        //这里我们可以根据thread name来进行区别对待,同时,我们还可以把异常信息写入文件,以供后来分析。
//        if ("sub1".equals(threadName)) {
//        } else if () {
//        }
    }


}

 

 

二:设置全局Application

 

public class ApplicationTrans extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        CrashHandler handler = CrashHandler.getInstance();
        handler.init(getApplicationContext()); //在Appliction里面设置我们的异常处理器为UncaughtExceptionHandler处理器
    }
}

 

 

 

三:在androidManifest中配置全局

 

 

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/activityTheme"
        android:name=".common.entity.ApplicationTrans"
        android:debuggable="true">

 

 

到此自定义捕获未处理异常结束!

后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

 

ASP.NET Webforms中的异常处理

ASP.NET Webforms中的异常处理

在ASP.NET Webforms中处理异常的首选方法是什么?

您有在Web.config级别添加(我认为)的Page_Error方法,并且当发生错误时,整个站点被重定向到那里.

这是否意味着您不应该在webforms应用程序中的任何地方使用try-catch? (假设你不想隐藏任何错误)

解决方法

只能抓住你可以处理的错误.如果您可以以允许页面继续加载的方式处理它们,那么这样做.任何其他破坏页面的异常都不应该在任何控件或页面中处理,因为您无法做任何事情.让它转到global.asax处理程序,并确保你记录了异常.

asp.net – WinForms和Asp的类库中的异常处理

asp.net – WinForms和Asp的类库中的异常处理

我一直在编写一个包含业务逻辑的类库,它将在一个新的 winforms项目和一个现有的asp.net项目中使用.

在开发过程中,我乱用了图书馆

Try 
'Whatever
Catch ex as exception
 MsgBox("Friendly error message",ex.message) 
end try

哪个适用于winforms,但不适用于asp.net
我需要一种友好(且简单)的方法来捕获适用于两个平台的异常.
或者更好的问题可能应该是我应该在类库中捕获异常吗?

解决方法

Or a better question Could probably be SHOULD I be trapping exceptions in the Class Library at all?

不应该.类库永远不应该做异常.您只是模糊了发生错误的真正原因,使开发人员更难理解出现了什么问题.

如果该开发人员是您或另一个开发者并不重要.因为当你从现在起一年后返回代码时,你将不知道究竟发生了什么(除非原始异常完好无损).

至于异常处理,我100%反对在应用程序中到处都有try / catch语句.真的没有任何好处.在WinForms中,使用Application.ThreadException事件向用户显示消息框.在ASP.NET中重写Error事件以记录异常并显示友好的错误页面.

我还创建了一个名为OneTrueError的服务,它可以为您提供一切服务.它有一个你可以使用的免费版本.

asp.net捕获全局未处理异常的几种方法

asp.net捕获全局未处理异常的几种方法

总结

以上是小编为你收集整理的asp.net捕获全局未处理异常的几种方法全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

我们今天的关于c# – 无法捕获Winforms中的未处理异常exceptionhandler无法捕获异常的分享已经告一段落,感谢您的关注,如果您想了解更多关于android 自定义全局未处理异常捕获器、ASP.NET Webforms中的异常处理、asp.net – WinForms和Asp的类库中的异常处理、asp.net捕获全局未处理异常的几种方法的相关信息,请在本站查询。

本文标签: