DispatcherUnhandledException event WPF
-
אני משתמש באירוע DispatcherUnhandledException כדי ללכוד את כל השגיאות של התוכנה
הבעיה היא שגם לאחר שלכדתי את השגיאה התוכנה קורסת בשונה מאם אני ישתמש ב try ו- cach בכל פעולה בנפרד ששם התוכנה לא תיפול אלא תמשיך הלאה לעבוד
תודה רבה!פורסם במקור בפורום CODE613 ב16/09/2014 00:39 (+03:00)
-
ברור שהיא תקרוס. אלא מה?
מה קורה בTry? יש קטע קוד שאם יש בו שגיאה, קופצים לבלוק הקאטצ ואח"כ הלאה.נו ומה קורה אם תשים Try על כל הקוד של התוכנית? אז זה קופץ מחוץ לבלוק הTry = מחוץ לתוכנית.
אם אתה רוצה מצב בו כל שורת קוד בתוכנה מוקפת בTry [u:3n3ivzq6]משלה[/u:3n3ivzq6], שים לב שאילו זה היה רצוי אז לא היו צריכים try בכלל, פשוט כשהמחשב היה נתקע בשורה מסוימת הוא היה קופץ עליה. הסיבה שזה לא ככה זה בגלל שזה יכול לעשות תוצאות ממש ממש לא רצויות. אם יש לך קוד ש"גוזר קובץ" אתה יכול למחוק אותו אפי' שהעתקה לא התבצעה וכדומה.
פורסם במקור בפורום CODE613 ב16/09/2014 11:07 (+03:00)
-
הפתרון :
אבל באופן כללי לא הייתי ממליץ להמשיך אחרי EXCEPTION כי זה עלול לגרום לתוצאות לא צפויות
@דוד ל.ט.
נו ומה קורה אם תשים Try על כל הקוד של התוכנית? אז זה קופץ מחוץ לבלוק הTry = מחוץ לתוכנית.
יש ויש, במקרה שלו בגלל המבנה של ה UI של WPF האירוע של ה Dispatcher תמיד מועבר ל UI THREAD הראשי ולכן כשקורה EXCEPTION כזה אפשר לעשות CONTINUE (בניגוד ל Thread.UnhandledException) וזה לא מעיף את התכנית אלא את ה Message ב Thread הרלוונטי
פורסם במקור בפורום CODE613 ב16/09/2014 12:36 (+03:00)
-
@דוד ל.ט.
נו ומה קורה אם תשים Try על כל הקוד של התוכנית? אז זה קופץ מחוץ לבלוק הTry = מחוץ לתוכנית.
יש ויש, במקרה שלו בגלל המבנה של ה UI של WPF האירוע של ה Dispatcher תמיד מועבר ל UI THREAD הראשי ולכן כשקורה EXCEPTION כזה אפשר לעשות CONTINUE (בניגוד ל Thread.UnhandledException) וזה לא מעיף את התכנית אלא את ה Message ב Thread הרלוונטי
חידוש של ממש בשבילי. אכן עובד אצלי, זה מפסיק את פעולת המתודה הנוכחית והUI ממשיך לעבוד כרגיל.
תודה רבה רבה!פורסם במקור בפורום CODE613 ב16/09/2014 13:24 (+03:00)