~Java4Beginners~
~Java4Beginners~

throws

Eine weitere Möglichkeit des Exception-Handlings ist es, eine auftretende Exception an die aufrufende Methode oder Klasse zurückzugeben. Hierfür benötigen wir das Schlüsselwort throws.

Sehen wir uns folgende Methode mal genauer an.

    public static int teilen(int a) throws ArithmeticException
    {
        return 7/a;
    }
Wenn dieser Funktion der int-Wert 0 übergeben wird, erhalten wir eine ArithmeticException, welche normalerweise dazu führen würde, dass unser Programm abgebrochen wird, da wir die Berechnung nicht in einen try-catch-Block gepackt haben. Allerdings wenn man sich den Methodenkopf genauer betrachtet, erkennt man den Zusatz throws ArithmeticException. Dieser Zusatz sagt der aufrufenden Klasse oder Methode, dass als Ergebnis dieser Berechnung es der Fall sein kann, dass eine Exception vom Typ ArithmeticException auftreten kann und ich dir in diesem Falle die Exception zurückliefere.

Damit es hier nicht zum Programmabbruch kommt, muss die aufrufende Methode dafür sorgen, dass die möglich auftretende Exception abgefangen wird. Dies passiert im Normalfall dadurch, dass der Methodenaufruf innerhalb eines try-catch-Blockes erfolgt, oder dadurch, dass die aufrufende ebenfalls eine auftretende Exception mittels throws nach oben weiterreicht.

Beispielprogramm


/**
 * Beispiel des Exceptionhandlings mit Throw
 * @author Markus Badzura
 */
public class ThrowsBeispiel
{            
    public static void main(String[] args) 
    {
    int ergebnis;
    try
    {
      System.out.println(ergebnis = teilen(0));
    }
    catch (ArithmeticException e)
    {
        System.err.println("Fehlermeldung: "+e);
    }
    System.out.println("Programmende");
    }
    
    /**
     * Teilt ein Ergebnis durch 0 und gibt die Exception an die aufrufende
     * Methode zurück
     * @param a intZahl Wert 0
     * @return ArithmeticException
     */
    public static int teilen(int a) throws ArithmeticException
    {
        return 7/a;
    }
}
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-17