C#.net控制台程序sentry报告异常不及时的问题

控制台程序中使用sentry发现异常报告不及时,如下:

        private static void Main(string[] args)
        {
           
            using (SentrySdk.Init(sentryDSN))
            {
                Test();
            }
            Console.WriteLine("开始发送异常");
        }
        private static void Test()
        {
            try
            {
                var a = 0;
                Console.WriteLine(1/a);
            }
            catch (Exception e)
            {
                SentrySdk.CaptureException(e);
                //主动发送的异常也被缓存,等待sentry.disposed()发送

                throw;
            }
        }

在sentry作用域结束前,异常不会发送到dsn,上面的控制台程序每次都等到Console.WriteLine("开始发送异常");才开始发送异常;

解决方案:


        private async Task Test()
        {
            try
            {
                var a = 0;
                Console.WriteLine(1/a);
            }
            catch (Exception e)
            {
                SentrySdk.CaptureException(e);

                await SentrySdk.FlushAsync(TimeSpan.FromSeconds(10));
                //强制刷新,这一句执行完毕异常就会发送

                throw;
            }
        }

在web程序中未遇到这样的问题,推测把sentry注册为单例也会遇到;

posted @ 2020-09-18 10:14  Zdelta  阅读(53)  评论(0编辑  收藏  举报