H
Heyoka955
Gast
hallo ich hätte eine frage, wann soll man try catch verwenden und wann throw thrwos? also was ist der unterschied zwischen den beiden bei der fehlerbehandlung
public int read() throws IOException {
throw new IOException();
}
public void testRead() {
try {
read();
} catch (IOException ex) {
System.out.println("von read ausgelöste IOException wurde abgefangen");
}
das heßt man sollte wenn man eine fehlerbehandlung machen möchte, sollte man am besten throw und try catch machen denn falls das Programm nicht weiß wie man diese zu behandeln hat dann ist throw eine weitere folge um den fehler zu behandeln.try-catch, wenn Du eine Exception "erwartest".
throw, wenn Du eine Exception wirfst.
throws, wenn Du in der Signatur der Methode angibst, dass sie eine Exception wirft
Java:public int read() throws IOException { throw new IOException(); } public void testRead() { try { read(); } catch (IOException ex) { System.out.println("von read ausgelöste IOException wurde abgefangen"); }
das heßt man sollte wenn man eine fehlerbehandlung machen möchte, sollte man am besten throw und try catch machen denn falls das Programm nicht weiß wie man diese zu behandeln hat dann ist throw eine weitere folge um den fehler zu behandeln.
aber wieso gibt es in try blöcken Methoden aufrufe worin Methoden ein throw implementieren.try catch verwendest du dort, wo du den Fehler erwartest und darauf reagieren willst. Du KANNST den Fehler danach nochmal werfen, wenn du z.B. nur eine Logzeile ausgeben willst, die Behandlung aber weiter außen durchführen möchtest.
throw verwendest du dann, wenn du selbst die Exception erzeugen willst (z.B. "unzulässiger Parameter für diese Methode").
throws erlaubt deiner Methode, zu erwartende Exceptions (z.B. beim Dateizugriff) nicht selbst zu behandeln, sondern nach außen weiterzuleiten, in der Hoffnung, dass dort jemand darauf reagiert.
ps: Bei einem nicht behandelten Fehler schmiert nicht zwingend das gesamte Programm ab, sondern nur der betreffende Thread. Du wirst das vor allem in Verbindung mit GUIs feststellen. Bei einem Fehler, der durch das Klicken eins Buttons ausgelöst wird, wird das Programm trotzdem weiterlaufen, nur eben nicht das, was durch den Klick ausgelöst wurde.
Das sagt dem Compiler, dass diese Methode eine Exception werfen kann. D.h. die aufrufende Methode muss sich also darum kümmern.public static int teiledurch0 throws Expection
was heißt das?