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