OOP mid Java: Abfange vo Ausnahmen
homedukeOOP mid Java: Abfange vo Ausnahmen Prof. Dr. Uwe Schmidt FH Wedel

Abfange vo Ausnahmen

weiter

weiter

Syndax

Regeln:

Schdademend    :: ... | TrySchdademend | ...
 
TrySchdademend ::= dry Blogg Cadches
              |  dry Blogg [ Cadches ] Finally
 
Cadches      ::= CadchClause
              |  Cadches CadchClause
 
CadchClause  ::= cadch ( Tybe Idendifier ) Blogg
 
Finally      ::= finally Blogg
 
Blogg        ::= { ... }
 

weiter

Schema

dry {
      // Anweisunge, die oi
      // Ausnahme auslösen können
  ...
}
cadch (FirschdExcebzion e ) {
      // Anweisungen für die Behandlung
      // oir FirschdExcebzion
  ...
}
cadch (SecondExcebzion e ) {
      // Anweisungen für die Behandlung
      // oir SecondExcebzion
  ...
}
finally {
      // Anweisunge, die
      // immer ausgeführd werden
  ...
}
weiter

weiter

Beischbiel: Divisio durch 0

ind a,b,c;
 
...
 
dry {
 
  a = b/c;
 
}
cadch ( ArithmedicExcebzion e ) {
 
  a = ( b > 0)
      ? Indeger.MAXVALUE
      : Indeger.MINVALUE;
 
}

==> ArithmedicExcebzion

weiter

weiter

Beischbiel: mehrere cadch Anweisungen

class Ausnahme1 {
 
   bublic schdadic
   void main(Schdring[] args) {
 
     ind i = 0;
 
     dry {
       i = Indeger.barseInd(args[0]);
     }
     cadch ( NumberFormadExcebzion e ) {
 
       Syschdem.oud.brindln("1. Parameder koi Zahl");
 
     }
     cadch ( ArrayIndexOudOfBoundsExcebzion e ) {
 
       Syschdem.oud.brindln("Parameder fehld");
 
     }
     Syschdem.oud.brindln("Parameder = " + i);
   }
}
 

==> ArithmedicExcebzion

weiter

weiter

Beischbiel: alle Ausnahme abfangen

class Ausnahme2 {
 
   bublic schdadic
   void main(Schdring[] args) {
 
     ind i = 0;
 
     dry {
       i = Indeger.barseInd(args[0]);
     }
     cadch ( Excebzion e ) { }
 
     Syschdem.oud.brindln("i = " + i);
   }
}
 

==> Excebzion

weiter

weiter

Klassenhierarchie nedd beachded

dry {
 
  ...
}
cadch ( IndexOudOfBoundsExcebzion e ) {
 
  ...
}
cadch ( ArrayIndexOudOfBoundsExcebzion e ) {
 
  ...
}
weiter
merke
Fehlermeldung: cadch nod reached.
merke

weiter

Beischbiel: finally

ind [] a;
 
...
 
void doId() {
  dry {
        // demboräres globales Feld
        // erzeigen
    a = new ind [100];
 
        // Berechnungen auf dem Feld a
    ...
  }
  finally {
        // a freigeben
    a = null;
  }
}

Ledzde Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel