Try-Catch Block

Diskutiere Try-Catch Block im Java Basics - Anfänger-Themen Bereich.
B

baker333

Servus,

ich frage mich warum beim Aufruf z(0) die Ausgabe -2 erscheint? Bei z(-2) wird eine NegativeValueException gefangen, aber warum wird bei z(0) dann eine RunTimeException() und nicht eine IllegalArgumentException() gefangen. Danke :)

Java:
public class TryCatch {
    
    public void z (int x) {
        System.out.println(a(x));
    }
    
    public int a (int x) {
        try {
            return b(x);
        } catch (RuntimeException e) {
            return -2;
        }   
    }
    
    public int b (int x) {
        try {
            return c(x);
        } catch (NegativeValueException e) {
            return -1;
        }
    }
    
    public int c (int x) throws NegativeValueException, IllegalArgumentException {
        if (x < 0) {
            throw new NegativeValueException(x);
            
        }
        
        else if( x > 0) {
            return x*x;
        
        
        } else {
            throw new IllegalArgumentException();
        }
    }
    
    public static void main (String [] args) {
        TryCatch x = new TryCatch();
        x.z(0); //-2
    }
    
}
 
J

JustNobody

Dann schau Dir einmal an, wovon IllegalArgumentException erbt.

c wirft eine IllegalArgumentException bei Parameter 0.

IllegalArgumentException erbt nicht von NegativeValueException, daher wird die Exception nicht in b behandelt.
a fängt RuntimeException und da IllegalArgumentException von RuntimeException erbt, wird dies da auch gefangen.
 
B

baker333

also ist IllegalArgumentException eine Unterklasse von RuntimeException?
 
Thema: 

Try-Catch Block

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben