חריגות ב- 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            חזור ל: תוכן עניינים