try und catch

Status
Nicht offen für weitere Antworten.

A3XX

Bekanntes Mitglied
Hi

Ich bins wiedermal :)

Hab ne Frage zu try und catch.
Hab das Kapitel jetzt durchgelesen und es ist mir noch nicht alles klar:

Der Autor schreibt es gibt drei Fälle
a) Man muss eine Exception behandeln sonst gibt es einen Compilation Error
b) Man kann die Exception behandeln wenn man will
c) die Fälle, in denen das throwing von Exceptions nicht im Methoden Header geschrieben steht

Naja, irgendwie tönt das für mich exakt gleich?! Oder wo ist der Unterschied und wie gibt man das jeweils in einer Methode an? Vermutlich ist fall c der, in welchem man nur in der Methode schreibt
throw new Exception()
aber nichts im Header. (Könnte man auch hier einene eigenen Namen für die Exception verwenden?)
Aber wie unterscheiden sich Fall a und Fall b?
 

Isaac

Bekanntes Mitglied
Fall b und c sind eigentlich gleich.


Grundsätzlich unterscheidet man 2 Arten von Fehlern. Einmal die Fehler bei denen der Benutzer noch eine Möglichkeit hat etwas dagegen zu unternehmen und die, wo das Kind so weit in den Brunnen gefallen ist das es kaum noch eine Möglichkeit gibt das Programm an der selben Stelle vernünftig weiter zu führen.

Die Fehler bei denen man noch etwas unternehmen kann sind meist von "Exception" abgeleitet und müssen gefangen werden (der Compiler meckert wenn man es nicht tut). Beispiele sind z.b. FileNotFoundException, DataFormatException etc etc...

Fehler bei denen man nichts mehr machen kann sind meist von "RuntimeException" abgeleitet und man muss sie nicht fangen. Man bekommt keine Warning und auch keinen Error wenn man sie nicht behandelt. Beispiele sind z.b. NullpointerException, IndexOutOfBounceException.

Hier hat man zur Laufzeit kaum eine Möglichkeit zu reagieren und würde man diese Fehler immer abprüfen müssen würde das Programm nur noch aus try catch bestehen.


Was der Author mit Fall 3 meinst weiss nicht. RuntimeExceptions müssen nicht als Throw deklariert werden und selbst wenn man sie deklariert müssen sie nicht gefangen werden. Es macht also keinen Unterschied.
 

Illuvatar

Top Contributor
Noch etwas genauer: Es gibt 3 Fälle:
RuntimeException extends Exception: Kein Compilerfehler, wenn die Exception nicht behandelt wird.
Error extends Throwable: Sollte nicht behandelt werden, schwerer Ausnahmefehler der VM, z.B. kein Arbeitsspeicher mehr.
Exception extends Throwable: Muss behandelt werden. Dafür gibt es 2 Möglichkeiten (die aber bei allen Throwable angewendet werden können):
1) Weiterleiten. Dazu muss throws <Throwable> an den Anfang der Methode geschrieben werden.
2) Mit try-catch(-finally) abfangen.

Auch Fehler, die mit throw geworfen werden, müssen so behandelt ewrden.
 

A3XX

Bekanntes Mitglied
Hi nochma

Schon viel viel klarer alles danke euch beiden.

Nun noch ne Frage:

Mit throw kann man ja Fehler selbst auslösen right? Ich verstehe einfach noch nicht ganz die Syntax. Beim Onlinebuch (Galileo) steht throw new IllegalArgumentException
dann steht aber irgendwoe auch throw (Exception) null
Was ist da der Unterschied?! Was kann man wann brauchen?

Und der Nutzen im triggern von eigenen Fehlern seh ich auch noch nicht so ganz. Hab jetzt bisschen nachgedacht und stelle mir das so vor, dass man ähnliche FEhler auf einen Nenner bringen kann:

Zum Beispiel bei einem Programm, das die Fläche eines Dreiecks berechnen soll. (Beispiel in meinem Buch) Dort darf ja glaube ich die Summe von zwei SEiten nie grösser sein als die dritte Seite.
Dieser Fehler wird ja von Java selbst nicht irgendwie Beachtung geschenkt.
Jetzt könnte ich aber ja alle falschen Eingaben, inklusive dem, mit dem throw auf den gleichen FehlerHandler schicken right?

Und darf nach throw kein Code mehr stehen?

Ach ja, gibt es irgendwo eine schöne Grafik mit all diesen Exceptions?
 

Isaac

Bekanntes Mitglied
Stell dir vor du schreibst eine Klasse Auto bei dem der Nutzer alle 4 Räder selbst anbringen kann bzw muss. Der nutzer instanziiert also deine Klasse Auto und bestückt 3 Räder, das 4te vergisst er. Nun versucht er die Methode Auto.fahre() aufzurufen.

Deine Methode fahre() prüft nun ob alle 4 Räder auch wirklich an den Achsen sind. Ist dies nicht der Fall wirft deine Methode einen Fehler NotAllTiresFoundException die der Benutzer behandeln muss.

Code:
try
{
    Auto.fahre()
}
catch(NotAllTiresFoundException natfe)
{
    //Check der Reifen
    //wenn Reifen fehlen, Benutzer benachrichtigen das er gefälligst alle Reifen anbauen soll
}



Das ist nun eine, zugegebenerweise aus den den Fingern gesaugte, eigene Fehlerbehandlung. Sicher kann man alle Exceptions reduzieren. Aber man will ja wissen welcher Fehler aufgetreten ist. Deshalb macht es Sinn dem Kind einen Namen zu geben.

Code nach einer Exception macht keinen Sinn. Es sei denn in der Form

Code:
if(a == null)
{
    throw new MyNullException(Buhhh something is null);
    //hier wäre code sinnlos
}
//weiter mit Code
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
missy72 Catch Blöcke zusammenfassen Java Basics - Anfänger-Themen 6
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
D try/catch-Block bei for-Schleife Java Basics - Anfänger-Themen 14
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
districon Try - Catch Java Basics - Anfänger-Themen 8
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Try-Catch Block Java Basics - Anfänger-Themen 3
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
H throws und try catch Java Basics - Anfänger-Themen 8
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
V InputMismatchException (Try and catch) Java Basics - Anfänger-Themen 10
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
TheMenox Try and Catch Java Basics - Anfänger-Themen 12
J Try Catch Java Basics - Anfänger-Themen 6
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
J Code in Try-Catch Block wird nicht komplett ausgeführt Java Basics - Anfänger-Themen 5
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
F try/catch Ausführungen ? Java Basics - Anfänger-Themen 3
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
I Exception try-catch Java Basics - Anfänger-Themen 1
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
F try/catch - (else) Java Basics - Anfänger-Themen 11
L Warum ist der catch-Block nicht erreichbar ? Java Basics - Anfänger-Themen 8
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
J Methoden try / catch exception Java Basics - Anfänger-Themen 5
S 'continue' in catch- und if-blöcken Java Basics - Anfänger-Themen 2
B Erste Schritte try-catch-Klauseln, überprüfte Ausnahmen Java Basics - Anfänger-Themen 4
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
M Try und Catch Java Basics - Anfänger-Themen 5
B Fehler mit try + catch verhindern Java Basics - Anfänger-Themen 8
N Catch Block in Try erzwingen Java Basics - Anfänger-Themen 14
E Problem mit for schleife/ try-catch block Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
C Wiederholung von try-catch Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
M exception catch falsch? Java Basics - Anfänger-Themen 11
S catch Exception erklären Java Basics - Anfänger-Themen 2
C Variable in try/catch Java Basics - Anfänger-Themen 10
B Try and Catch Java Basics - Anfänger-Themen 6
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
J try und catch Java Basics - Anfänger-Themen 7
G Exceptionfreie Anweisungen in try-catch-Blöcke, Java Basics - Anfänger-Themen 6
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
M Frage zu try ... catch Java Basics - Anfänger-Themen 9
S NumberFormatException , mit Try/Catch? Java Basics - Anfänger-Themen 7
B Try/catch Java Basics - Anfänger-Themen 11
M Try & Catch Java Basics - Anfänger-Themen 7
V Was ist ein Try-Catch Block Java Basics - Anfänger-Themen 4
M Nach catch mit der schleife weitermachen Java Basics - Anfänger-Themen 9
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
S try-catch Java Basics - Anfänger-Themen 10
Tandibur Server führt "try-catch" nicht aus Java Basics - Anfänger-Themen 6
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
H try catch Java Basics - Anfänger-Themen 4
I double-Variable außerhalb des Try-Catch-Blocks nicht gültig Java Basics - Anfänger-Themen 2
D Catch wiederholt sich ständig Java Basics - Anfänger-Themen 2
T try-catch-finally Java Basics - Anfänger-Themen 8
G Anwendung von try-catch Java Basics - Anfänger-Themen 10
G try. catch Verwendung Java Basics - Anfänger-Themen 11
M Try-Catch-Problem Java Basics - Anfänger-Themen 4
G habe ein Catch problem Java Basics - Anfänger-Themen 7
C Nach Catch-Klausel Programm weiter laufen lassen Java Basics - Anfänger-Themen 5
B try & catch Problem mit Exception bzw String.split() Java Basics - Anfänger-Themen 5
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
G Bei catch beenden Java Basics - Anfänger-Themen 7
U catch mit finally Java Basics - Anfänger-Themen 5
C Exceptions, try, catch --> Frage Java Basics - Anfänger-Themen 7
J Try-Catch-Frage Java Basics - Anfänger-Themen 13
B catch exception funktioniert nicht! Java Basics - Anfänger-Themen 14
D Frage try and catch Java Basics - Anfänger-Themen 7
ven000m try catch - was muss bei catch rein Java Basics - Anfänger-Themen 28
G Datenbank - catch Java Basics - Anfänger-Themen 2
H Konstruktor in Methode fremder Klasse: try-catch-Problem Java Basics - Anfänger-Themen 4
M return und try-catch Java Basics - Anfänger-Themen 6
M Try . catch erzwungen? Java Basics - Anfänger-Themen 11
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
A Syntaxproblem mit try und catch Java Basics - Anfänger-Themen 3
Silver-Blue fragen zu Swing und catch Exceptions Java Basics - Anfänger-Themen 2
G return fehler bei try catch Java Basics - Anfänger-Themen 8
H try und catch Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben