首页 新闻 会员 周边 捐助

怎么在Console中处理全局异常?

0
悬赏园豆:5 [已解决问题] 解决于 2021-03-04 03:49

我的一个Console application,有很多数据库操作,因为数据库过载的时候,会造成console的sqlexception 异常,使console崩溃。

我有不想对每个数据库操作都try catch。应该怎么样在console中设置一个全局异常处理,使console不再崩溃呢?

谢谢

泰德的主页 泰德 | 初学一级 | 园豆:6
提问于:2021-03-02 03:50
< >
分享
最佳答案
2

http://www.tutorialspanel.com/create-a-global-error-handler-in-c-for-a-console-application/index.htm

using System;
class Program {
    static void Main(string[] args) {
        System.AppDomain.CurrentDomain.UnhandledException+=UnhandledExceptionTrapper;
        throw new Exception("Global Exception Handler");
    }
    static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) {
        Console.WriteLine(e.ExceptionObject.ToString());
        Console.WriteLine("Press Enter to Exit");
        Console.ReadLine();
        Environment.Exit(0);
    }
}
收获园豆:3
RosonJ | 老鸟四级 |园豆:4910 | 2021-03-02 09:14
其他回答(1)
0

.NET Core 过滤器实现

public class GlobalExceptionFilter:Attribute, IExceptionFilter
    {
        private readonly IHostingEnvironment _hostingEnvironment;
        private readonly IModelMetadataProvider _modelMetadataProvider;

        public GlobalExceptionFilter(
            IHostingEnvironment hostingEnvironment,
            IModelMetadataProvider modelMetadataProvider)
        {
            _hostingEnvironment = hostingEnvironment;
            _modelMetadataProvider = modelMetadataProvider;
        }
        /// <summary>
        /// 发生异常进入
        /// </summary>
        /// <param name="context"></param>
        public async void OnException(ExceptionContext context)
        {
            ContentResult result = new ContentResult
            {
                StatusCode = 500,
                ContentType = "text/json;charset=utf-8;"
            };

            if (_hostingEnvironment.IsDevelopment())
            {
                var json = new { message = context.Exception.Message };
                result.Content = JsonConvert.SerializeObject(json);
            }
            else
            {
                result.Content = "抱歉,出错了";
            }
            context.Result = result;
            context.ExceptionHandled = true;
        }
    }
收获园豆:2
楠木大叔 | 园豆:2083 (老鸟四级) | 2021-03-02 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册