.NET как отловаить внезапный crash программы

Имеется такая проблема, как внезапные завершение программы на некоторыx компьютераx, без ошибки или еще чего либо. К сожалению debug-тестами, так и не удалось выяснить чем же является данная проблема.

Интересует сообственно метод, которым можно было бы отлавливать внезапные завершения/crash программы. Желательно с log-файлом, с записью разной информации.


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

Автор решения: Nevod

Если это Framework 4.x Windows Form App то в свойствах проекта, вкладка Application есть кнопка View Application Events, и собственно событие Me.UnhandledException, которое вызывается если исключение не было обработано явно.

Если это Core 5 или 6 WPF то можно повесить обработчик, например:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

Собственно там можно реализовывать обработку внезапностей или общую логику.

Например:

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += MainWindow_Loaded;
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Log.Write(Log.Level.Info, $"DataSource: {Properties.Settings.Default.MsSqlDataSource}");
        DataContext = new InstallerViewModel();
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Exception ex = (Exception) e.ExceptionObject;
        Log.Write(Log.Level.Error, ex.Message);
        Log.Close();
    }
}
→ Ссылка