При использовании задач вы должны проявлять особую осторожность при обработке исключений, вот пример:Задача с встроенной обработкой исключений?
class Program
{
static void Main(string[] args)
{
Task<int> task = new Task<int>(Test);
task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted);
task.Start();
Console.ReadLine();
}
static int Test()
{
throw new Exception();
}
static void ExceptionHandler(Task<int> task)
{
var exception = task.Exception;
Console.WriteLine(exception);
}
}
От here
Мой вопрос, есть ли способ сделать собственную задачу, которая будет обрабатывать (log to service) все исключения без указания его разработчиком вручную. Какое-то наследие помощи.
Вы можете получить из ['Задача'] (https://msdn.microsoft.com/en-us/library/system.threading.tasks.task (v = vs.110) .aspx). Возможно, создайте собственный класс задач, который вызывает 'base.ContinueWith (ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted);' перед вызовом 'base.Start()' в куске созданного вами метода 'Start()'. – Quantic
Я не уверен, понимаю ли я весь прецедент. Но то, что вы могли бы попробовать, - это исключение и исключение журнала на самом высоком уровне. Если выбрано исключение, это, скорее всего, означает, что ваше приложение в любом случае находится в некорректном состоянии. – Karolis