4
使用你必须要特别小心处理异常的任务,这里有一个例子:内置异常处理的任务?
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
我的问题是,如果有任何的方式来创建一个自定义任务,将处理(登录到服务)所有异常,而无需由开发人员手动说明它?某种帮助遗产。
您可以从['Task'](https://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v = vs.110).aspx)派生出来。也许在你创建的'Start()'方法的主体中调用'base.Start()'之前,调用'base.ContinueWith(ExceptionHandler,TaskContinuationOptions.OnlyOnFaulted);'定制任务类。 – Quantic
我不确定我是否理解整个用例。但是,你可以尝试冒泡异常,并在最高级别登录。如果抛出异常,那么它很可能意味着您的应用程序无论如何都处于不正确的状态。 – Karolis