יום חמישי, 24 בפברואר 2011

Simple exntesnion for Task exception handling

כשעובדים עם Task ההמלצה של MSDN היא לתפוס את ה Exceptions ע"י Wait בתוך try-catch
מה שגורם לסרבול של הקוד , ובנוסף תוקע את ה task במקום לעבוד אסינכרוני.
כתבתי extension method שמאפשר לעשות logging ולטפל ב exception במקום אחד מרכזי.
ע"י שימוש ב HandleExceptionAsync
Task.Factory.StartNew(() =>
{
throw new Exception("test exception");
}).HandleExceptionAsync();


הדוגמא שלי גם רושמת ל logger שהוא חלק מהפרויקט שלי.

בנוסף ניתן להירשם ל event שיעלה בכל פעם שיש exception:
TaskHandlerExtensions.TaskExceptionRaised += t =>
{
   //process here the exception... 
   //t.Exception
};
Task.Factory.StartNew(() =>
{
throw new Exception("test exception");
}).HandleExceptionAsync();

את הקוד המלא ניתן להוריד מכאן (העליתי את כל הקוד כי אני עובד עם תשתית logging )  הקובץ הספציפי נמצא ב:

Diagnostics\Roniz.Diagnostics.Logging\TaskHandlerExtensions.cs

או ניתן להורדה מכאן רק את הקובץ הספציפי ולשנות אם יש צורך את ה dependency ל ILog

אין תגובות:

הוסף רשומת תגובה