חריגות ב- JAVA
מבנה
נתונים ואלגוריתמים
ג'אווה, לרוע
המזל, דומה ל- C++ וכוללת את מנגנוני try, throw ו- catch.
אולם, ג'אווה
מגדירה היררכיה מחלקתית עבור טעויות, שכולן נכללות בגדר ההתמחויות של מחלקת exception.
חריגות
בג'אווה, כמו חריגות ב- Ada, נזרקות ממתודה של
מחלקה אחת למתודה הנקראת, עד אשר הן מגיעות לבלוק ה- try. בכל אופן, המתודות בג'אווה
מונות בצורה מפורשת את החריגות שהן זורקות.
void readFromFile( String s ) throws
IOException,
InterruptedException {
......
}
try {
readFromFile( "abc" );
}
catch( FileNotFoundException e ) {
..... }
catch( IOException e) { .... }
catch( Exception e ) {
// catches any other error (Exception is the
"superclass")
....
}
finally {
// Cleanup code - always executed
}
שים לב כי ה- finally מופעל בין אם החריגה נזרקת ובין
אם לא.
מתכנני שפת
ג'אווה פישטו זאת למערכת נוחה לשימוש. Catch
מקבל פרמטר יחיד השייך למחלקת
exception.
כמו ב- Ada, חריגות רבות מוגדרות מראש, אך
ניתן גם להגדיר חריגות באופן עצמאי.
שים לב שהבעיה
של הגדרה מדויקת של ג'אווה היא בעיה מתמשכת בתעשיית המחשבים: הנטייה לאמץ
"אופנה שיגעונית" לפני שהיא מוגדרת באופן יסודי וחד-משמעי מובילה לבעיות
הפניה רבות ולעלויות גבוהות למשתמש שאותן היה ניתן למנוע.
אף מהנדס
מקצועי לא היה מתכנן מערכת המתבססת על ברגים שאינם בסטנדרט מוגדר.
המשך ל: שגיאות ADT ב- C חזור
ל: תוכן עניינים