homedukeOOP mit Java: Ausnahmen: Compilezeit-Überprüfungen Prof. Dr. Uwe Schmidt FH Wedel

Ausnahmen: Compilezeit-Überprüfungen

weiter

weiter

Überprüfte Ausnahmen

zum systematischen Auslösen und Abfangen von Ausnahmen.

Alle Ausnahmen aus Unterklassen von Exception, die nicht Unterklasse von RuntimeException sind.

Idee:
eine Methode muss eine Ausnahme, die bei Ihrer Ausführung auftreten kann, abfangen oder explizit angeben.

weiter

weiter

Beispiel: unkontrolliertes Auslösen

class MyException extends Exception {
  MyException() {
    super();
  }
}
 
public
class AusnahmeCheck0 {
 
  public
  void doIt() {
 
    // Ausnahme ausloesen
    throw
      new MyException();
  }
}

==> Compilerfehler:

Exception MyException must be caught, or it must be declared in the throws clause of this method

weiter

weiter

Beispiel: Ausnahme abgefangen

class MyException extends Exception {
  MyException() {
    super();
  }
}
 
public
class AusnahmeCheck1 {
 
  public
  void doIt() {
 
    try {
 
      // Ausnahme ausloesen
      throw
        new MyException();
    }
    catch ( MyException e ) {
 
      // Ausnahmebehandlung
    }
  }
}

==> o.k.

weiter

weiter

Beispiel: Ausnahme explizit deklarieren

class MyException extends Exception {
  MyException() {
    super();
  }
}
 
public
class AusnahmeCheck2 {
 
  public
  void doIt()
    throws MyException
    // MyException wird nicht selbst behandelt
 
    {
      // Ausnahme ausloesen
      throw
        new MyException();
    }
}

==> o.k.

class Exc1 extends Exception {}
 
class Exc2 extends Exception {}
 
class X {
 
    void f1() throws Exc1 {
        throw new Exc1();
    }
 
    void f2() throws Exc2 {
        throw new Exc2();
    }
 
    void g() throws Exc1Exc2 {
        f1();
        f2();
    }
 
    void h() throws Exc2 {
        try {
            g();
        }
        catch (Exc1 e1) {}
    }
}

Indirektes Auslösen von Ausnahmen und Deklaration von überprüften Ausnahmen

weiter

weiter

Anwendung: IOException

import java.io.*;
 
public
class AusnahmeCheck3 {
 
  FileInputStream stream;
 
  public
  void openfile( String name )
    throws FileNotFoundException
    {
      stream = new FileInputStream(name);
    }
 
  public
  void doIt()
    {
      try {
        openfile("abc");
      }
      catch ( IOException e ) {
        stream = null;
      }
    }
}

==> o.k.:
FileNotFoundException ist Unterklasse von IOException im Paket java.io


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