Эквивалент System.Windows.Forms.Application.ThreadException для консольного приложения или службы Windows или любого процесса в целом

В WinForms я использую:

  • System.Windows.Forms.Application.ThreadException
  • System.Windows.Application.UnhandledException

Что мне следует использовать для не -многопоточного приложения Winforms -?

Рассмотрим полный код ниже на C #.NET 4.0:

using System;
using System.Threading.Tasks;

namespace ExceptionFun
{
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Task.Factory.StartNew(() =>
                {
                    throw new Exception("Oops, someone forgot to add a try/catch block");
                });
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            //never executed
            Console.WriteLine("Logging fatal error");
        }
    }
}

Я видел множество подобных вопросов на stackoverflow, но ни один из них не содержал удовлетворительного ответа. Большинство ответов имеют тип :«Вы должны включить правильную обработку исключений в свой код» или «Использовать AppDomain.CurrentDomain.UnhandledException».

Редактировать :Кажется, мой вопрос был неправильно понят, поэтому я переформулировал его и предоставил меньший пример кода.

6
задан Eiver 10 July 2012 в 21:01
поделиться