C#, Sentry и unhandled exception: как они это делают?

Уважаемые господа,

я начал пробовать использовать централизованный логгинг - через сайт sentry.io.

Практически там просто выбираешь тип проекта, пишешь его название, и система говорит "о, вот этот кусок кода вставь туда то, и будет тебе счастье!"

В моём случае, я экспериментировал с C# и WinForms, сайт предложил мне переписать обычный запуск проекта с

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

на

    [STAThread]
    static void Main()
    {
        SentrySdk.Init(o =>
        {
            // Tells which project in Sentry to send events to:
            o.Dsn = "https://[email protected]/63136";
            // When configuring for the first time, to see what the SDK is doing:
            o.Debug = true;
            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
            // We recommend adjusting this value in production.
            o.TracesSampleRate = 1.0;
        });

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

Потом я поигрался с тем, что в Sentry можно "написать" посредством вызова

SentrySdk.CaptureMessage("Hello Sentry");

и подумал, что во все try-catch нало будет добавлять теперь такую конструкцию.

Но, как выяснилось, Sentry отлично логгирует и unhandled exception! То есть, я сделал "не обтрайкеченную" ошибку, когда insert просто "стукается лбом" о constraint в базе - и эта ошибка, когда приложение упало, прекрасно записалась в Sentry!

И вот тперья сижу и думаю: я не понимаю, как они это делают? Что происходит? Они ведь не создают никакого глобального try-catch, который мог бы перехватывать все "бесхозные" ошибки. А как еще можно перехватить и обработать все исключения в коде?

Спасибо заранее за Ваши подсказки.

в самом конце: как у меня выглядит на их сайте эта ошибка:

ошибка на сайте Sentry


Ответы (0 шт):