Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 539|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-15 21:20:07 | 显示全部楼层 |阅读模式
    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(); //捕获全局异常
              
            }
        }
    }
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-18 21:12 , Processed in 0.137482 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表