throw exception, או שמא סתם throw?

22 באפריל 2008

תגיות: , ,
3 תגובות

לעתים אני נתקל בקוד בסגנון הבא:

try
{
    DoSomething();
}
catch (Exception ex)
{
    // Some logging operation or whatever...

   throw ex;
}

השורה throw ex כביכול זורקת חריג חדש עם אותם הפרטים של ה – Exception הקודם, מה שגורם למחיקת ה – Stack Trace.

במידה וביצענו פעולות כלשהן על חריג, ואנחנו מעוניינים לזרוק אותו מחדש, יש להשתמש במילה throw בלבד, לדוגמה:

try
{
    DoSomething();
}
catch (Exception ex)
{
    // Some logging operation or whatever...

   throw;
}

במקרה הזה ה – Stack Trace המקורי ישאר (כמובן שזה תקף לכל שפה דוטנטית אחרת).

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

3 תגובות

  1. Nir Tayeb6 במאי 2008 ב 22:13

    והשאלה שנשאלת בתגובה לשאלה הזאת, היא למה לעשות את זה?
    כל הרעיון של try..catch זה לתפוס את השגיאה ולטפל בא, אז למה לזרוק אותה שוב?
    לא חבל על המשאבים שנזקקים בכדי לעקוב אחר התנהלות הקוד?

    הגב
  2. אוהד אסטון7 במאי 2008 ב 21:22

    יש לא מעט סיבות, כמו לרשום אותה בלוג, ולזרוק אותה לשכבה הבאה, לעתים ניתן אפילו להחליט דרך קבצי קונפיגורציה (דוגמת Exception Managment Application Block), או אם רוצים לבצע מספר פעולות במקרה שנתפסת שגיאה, מבלי לבלוע אותה (כך שהשכבה הבאה תתפוס אותה).

    הגב
  3. Amita16 במאי 2008 ב 6:46

    Please help.I know only english 🙁 .I want to read your blog

    הגב