【发布时间】:2016-08-19 01:16:45
【问题描述】:
在使用任务时,你必须特别注意处理异常,这里有一个例子:
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。也许在您创建的Start()方法的主体中调用base.Start()之前创建一个调用base.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted);的自定义任务类。 -
我不确定我是否了解整个用例。但是您可以尝试将异常冒泡并将其记录在最高级别。如果抛出异常,则很可能意味着您的应用程序处于不正确的状态。
标签: c# .net multithreading exception task