לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #3  
ישן 29-01-2007, 09:31
  משתמש זכר DeadNight DeadNight אינו מחובר  
 
חבר מתאריך: 28.06.06
הודעות: 150
שלח הודעה דרך MSN אל DeadNight
בתגובה להודעה מספר 1 שנכתבה על ידי nr91 שמתחילה ב "שלום! שאלה על throw-catch"

כשלמדת try...catch ראית ש-JAVA מציע דרך לטפל בחריגות שנזרקות המהלך הריצה, שהן למעשה שגיאות לא קריטיות שזוהו ע"י התוכנה.

כמתכנתת, גם את תרצי לעתים לזרוק חריגות משלך. זאת על מנת לקבל התראות על תקינות פעולתו של הקוד, ובנוסף אינדיקציה מה השתבש ואיפה. דבר זה מאוד מקל על תחזוקתו של הקוד.

נתחיל ב-Constructors של המחלקה Throwable:
קוד:

יוצר אובייקט "זריק" חדש עם null כערך של הודעת השגיאה.
קוד:

יוצר אובייקט זריק חדש עם הודעה message על פרטי השגיאה.

יוצר אובייקט זריק חדש עם הודעת שגיאה message וסיבת זריקה cause (עליה אני ארחיב עוד מעט).
קוד:

יוצר אובייקט עם סיבת זריקה cause (ההודעה תהיה ()cause.toString).

ניתן לתת לאובייקט זריק סיבת זריקה cause, שהיא אובייקט ממחלקה Throwable. זאת מכיוון שייתכן כי שגיאה מסויימת במחלקה שאת יורשת ממנה או משתמשת באובייקט שלה זורקת חריגה תוך כדי ריצה, ואחרי שתפסת אותה, את רוצה ליצור חריגה במחלקה שלך שתודיעה מה הייתה החריגה בהקשר של המחלקה שלך (משיקולי תחזוקה בד"כ) ובנוסף מה הייתה הסיבה לחריגה (שהיא חריגה אחרת) דבר זה נקרא "שרשור חריגות".

דוגמא:
קוד:
try { lowLevelOp(); } catch (LowLevelException le) { // Chaining-aware constructor throw new HighLevelException(le); }

בדוגמא, LowLevelOp היא מתודה במחלקה שאת משתמשת בה במחלקה שלך, LowLevelException היא מחלקה זריקה שנכתבה בעבור מחלקה זו ,ו-HighLevelException היא מחלקה זריקה שנכתבה עבור המחלקה שלך.
את מנסה להפעיל את המתודה lowLevelOp במחלקה שלך, ובמקרה שנזרקת שגיאה, את תופסת אותה וזורקת שגיאה משלך ומשרשרת אליה את השגיאה הקודמת.

קוד:
try { lowLevelOp(); } catch (LowLevelException le) { // Chaining-aware constructor throw new HighLevelException("An exception in myOp, using lowLevelOp", le); }

בדוגמא הזו את זורקת הודעת שגיאה משלך בנוסף לשרשור. נניח שהנסיון לקרוא למתודה LowLevelOp נמצאת בתוך המתודה myOp במחלקה שלך. כך את יודעת בדיוק לאיפה לפנות בקוד בכדי לטפל בשגיאה.

הסבר מפורט ניתן לקרוא באתר של Sun.

נערך לאחרונה ע"י DeadNight בתאריך 29-01-2007 בשעה 09:33.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:43

הדף נוצר ב 0.03 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר