當處理在TPL任務異常我所遇到的兩種方式來處理異常。第一個捕獲異常的任務中,結果像這樣內返回它:任務並行庫異常處理
var task = Task<Exception>.Factory.StartNew(
() =>
{
try
{
// Do Something
return null;
}
catch (System.Exception e)
{
return e;
}
});
task.ContinueWith(
r =>
{
if (r.Result != null)
{
// Handle Exception
}
});
二是文檔中顯示的一個,我想用正確的方法做的事情:
var task = Task.Factory.StartNew(
() =>
{
// Do Something
});
task.ContinueWith(
r =>
{
if (r.Exception != null)
{
// Handle Aggregate Exception
r.Exception.Handle(y => true);
}
});
我想知道第一種方法是否有什麼問題? 我已經收到'未處理的聚合異常'例外,每次都使用這種技術,並想知道如何發生這種情況?
爲了澄清,我認爲第二種模式是更好的,但我有一塊代碼,它使用第一種模式,我試圖找出它是否需要重新分解,即如果事實證明不是所有的例外都會被困住。
我有同樣的問題,雖然我與task.IsFaulted檢查,我發現,如果它有任務過程中的異常,即使我做的第一件事就是檢查是什麼,以及它指出,放棄,但仍引起的問題..我有一個例外泄漏,不應該有.. – BugFinder