C#中的那些全局异常捕获

1.WPF全局捕获异常

public partial class App : Application

{

public App()

{

// 在异常由应用程序引发但未进行处理时发生。主要指的是UI线程。

this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);

//  当某个异常未被捕获时出现。主要指的是非UI线程

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

}

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)

{

//可以记录日志并转向错误bug窗口友好提示用户

if (e.ExceptionObject is System.Exception)

{

Exception ex =(System.Exception)e.ExceptionObject;

MessageBox.Show(ex.Message);

}

}

void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)

{

//可以记录日志并转向错误bug窗口友好提示用户

e.Handled = true;

MessageBox.Show("消息:"+e.Exception.Message+"\r\n"+e.Exception.StackTrace);

}

2.winform捕获全局异常

static class Program

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

Application.ThreadException += Application_ThreadException;////UI线程异常

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;////多线程异常

}

/// <summary>

/// 多线程异常

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)

{

//可以记录日志并转向错误bug窗口友好提示用户

Exception ex = e.ExceptionObject as Exception;

MessageBox.Show(ex.Message);

}

/// <summary>

/// UI线程异常

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

{

//可以记录日志并转向错误bug窗口友好提示用户

MessageBox.Show(e.Exception.Message);

}

}

}

3.MVC程序全局捕获异常

namespace 全局异常捕获测试

{

public class MvcApplication : System.Web.HttpApplication

{

protected void Application_Start()

{

AreaRegistration.RegisterAllAreas();

GlobalFilters.Filters.Add(new CustomExceptionAttribute());

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

}

}

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]

public class CustomExceptionAttribute : FilterAttribute, IExceptionFilter

{

public virtual void OnException(ExceptionContext filterContext)

{

string message = string.Format("消息类型:{0}<br>消息内容:{1}<br>引发异常的方法:{2}<br>引发异常源:{3}"

, filterContext.Exception.GetType().Name

, filterContext.Exception.Message

, filterContext.Exception.TargetSite

, filterContext.Exception.Source + filterContext.Exception.StackTrace

);

}

}

}

4.web form全局异常捕获

namespace WebForm全局异常捕获

{

public class Global : System.Web.HttpApplication

{

protected void Application_Start(object sender, EventArgs e)

{

}

void Application_Error(object sender, EventArgs e)

{

// 在出现未处理的错误时运行的代码

Exception objExp = HttpContext.Current.Server.GetLastError(); //捕获全局异常

}

}

}

时间: 2024-12-10 22:21:05

C#中的那些全局异常捕获的相关文章

spring boot2.0+中添加全局异常捕获

1.添加自定义异常,继承RuntimeException,为什么继承RuntimeException呢?是因为我们的事务在RuntimeException异常下会发生回滚. 1 public class BusinessException extends RuntimeException{ 2 3 public BusinessException(String code, String msg){ 4 this.code = code; 5 this.msg = msg; 6 } 7 8 pri

Spring-MVC开发之全局异常捕获全面解读(转)

异常,异常.我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个!产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息!在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种: WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等. SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉,互相没

Configure、中间件与ErrorHandlingMiddleware全局异常捕获

一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序请求的机制管道.通过IApplicationBuilder下的run.use方法传入管道处理方法.这是最常用方法,对于一个真实环境的应用基本上都需要比如权限验证.跨域.异常处理等. IHostingEnvironment:提供有关正在运行的应用程序的web托管环境的信息 简单来说Configure方

自定义全局异常捕获

原文:http://blog.csdn.net/jinzhencs/article/details/51700009 第一种:实现HandlerExceptionResolver 注意: 把错误码 重设成200,不然还是返回的异常信息. 注解@Compoment交由spring创建bean 之后就能愉快的返回自己的错误码了. 或者记录错误日志. /** * 全局异常捕获 * @author Mingchenchen * */ @Component public class GlobleExcep

Spring-MVC开发之全局异常捕获全面解读

在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种, WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等. SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉 互相没有依赖,每个都可单独使用! 定义服务器错误WEB.XML整合Spring MVC web.xml <error-page> <

MVC 好记星不如烂笔头之 ---&gt; 全局异常捕获以及ACTION捕获

public class BaseController : Controller { /// <summary> /// Called after the action method is invoked. /// </summary> /// <param name="filterContext">Information about the current request and action.</param> protected ov

springboot编程之全局异常捕获

springboot编程之全局异常捕获 1.创建GlobalExceptionHandler.java,在类上注解@ControllerAdvice, 在方法上注解@ExceptionHandler(value = Exception.class),Exception.class表示拦截所有的异常信息 package com.imooc.web.controller; import com.imooc.exception.UserNotExistException; import org.spr

ASP.NET Core Web API中实现全局异常捕获与处理

处理全局异常 HANDLING ERRORS GLOBALLY 在上面的示例中,我们的 action 内部有一个 try-catch 代码块.这一点很重要,我们需要在我们的 action 方法体中处理所有的异常(包括未处理的).一些开发者在 action 中使用 try-catch 代码块,这种方式明显没有任何问题.但我们希望 action 尽量保持简洁.因此,从我们的 action 中删除 try-catch ,并将其放在一个集中的地方会是一种更好的方式..NET Core 给我们提供了一种处

170621、springboot编程之全局异常捕获

1.创建GlobalExceptionHandler.java,在类上注解@ControllerAdvice,在方法上注解@ExceptionHandler(value = Exception.class),Exception.class表示拦截所有的异常信息 package com.rick.common.handler; import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.util.IOUtils;import com.r