Exception werfen nur welche?

Status
Nicht offen für weitere Antworten.
W

waldemar

Gast
Halllo,

habe hier ein buch vor mir liegen, welches meine Fragen nicht beantworten kann, daher nerve ich euch mal.

try{}
catch(Exception e)
{}

Es gibt ja zig Ausnahmen doch welche Exception soll ich denn angeben? Immer diese wo ich vermute, dass hier ein Fehler auftreten kann? Oder warum kann ich nicht einfach Exception nehmen das geht ja immer?
 

Noctarius

Top Contributor
Wenn ich deine Frage richtig verstehe, möchtest du wissen, wann du welche Exceptions abfangen sollst, richtig?

Naja das liegt hauptsächlich am Programm. Wenn du eine SQL Verbindung öffnest liegt die Vermutung nahe, dass ein Fehler bei der Verbindung zum SQL Server auftreten kann, eben eine "SQLException".

Wenn du wiederum auf das Dateisystem zugreifst könnte die Datei nicht vorhanden sein "IOException".

Nun kommt es drauf an, ob du nur einen gewissen Fehler abfangen möchtest, z.B. einen der oben genannten, oder generell versuchst alles zu erwischen.

Bei mir kommt es immer auf die Gegenheit an. Bei oben genannten Dingen greife ich auf die spezifische zurück bei grösseren Funktionen wo mehrere Sachen passieren könnten benutze ich die Bases Exception.

Aber im allgemeinen macht es keinen grossen Unterschied da alle spezifischen Exceptions von der Basis Exception abstammen. Sie definieren halt nur eine gewisse Untermenge an Fehlern und lassen Andere, die nicht zu eben dieser Untermenge gehören, durch
 
W

waldemar

Gast
Wenn ich deine Frage richtig verstehe, möchtest du wissen, wann du welche Exceptions abfangen sollst, richtig?

nein, das wann ist mir schon klar. Nur warum kann ich nicht die Mutter der Ausnahmen "Exception" jedesmal nehmen (dann muss ich keine 50 andere auswendiglernen oder nachschlagen) wenn ich sowieso eine konkrete Fehlermeldung bekomme egal welche Exception ich nehme?
 

Wildcard

Top Contributor
waldemar hat gesagt.:
nein, das wann ist mir schon klar. Nur warum kann ich nicht die Mutter der Ausnahmen "Exception" jedesmal nehmen (dann muss ich keine 50 andere auswendiglernen oder nachschlagen) wenn ich sowieso eine konkrete Fehlermeldung bekomme egal welche Exception ich nehme?
Für mich ist es ein sehr großer Unterschied ob ich eine NullPointer, eine IllegalArgument, oder eine OutOfBoundsException bekomme...
 

Noctarius

Top Contributor
Allgemein sollte man versuchen solche Exceptions zu vermeiden ;)

Nee aber ich denke auch, dass es sehr wohl an bestimmten Stellen interessant ist zu wissen welche Exception geworden wurde, und das nicht nur anhand des Fehlertextes.

Aber hatte mein Satz deine Frage nicht klargestellt? "WANN WELCHE abgefangen werden sollte"

Auch wenn mich jetzt viele hauen werden, du musst nicht alle auswendig lernen (in Javadocs steht meistens drin welche geworfen werden können) und Eclipse und andere IDEs geben dir auch an welche fehlt ;)
 
W

waldemar

Gast
Nee aber ich denke auch, dass es sehr wohl an bestimmten Stell
en interessant ist zu wissen welche Exception geworden wurde, und das nicht nur anhand des Fehlertextes.

das heißt also:

1. Ich fange immer eine Ausnahme ab vor der ich denke das genau diese Auftritt. Sprich wenn der Benutzer z.B. durch 55/ 0 teilt fange ich nicht eine Exception e ab sondern eine DivisionByZero e oder so ähnlich richtig?
 

Noctarius

Top Contributor
Jo genauso könnte man es sehen. Wie gesagt wenn du zu einem SQL Server connecten willst, könnte der Server nicht erreichbar sein, die Datenbank nicht existieren, ebenso die Tabelle oder Spalte oder deine Rechte reichen nicht aus, usw usw usw... Das wären alles SQLExceptions.
 
W

waldemar

Gast
Noctarius hat gesagt.:
Jo genauso könnte man es sehen. Wie gesagt wenn du zu einem SQL Server connecten willst, könnte der Server nicht erreichbar sein, die Datenbank nicht existieren, ebenso die Tabelle oder Spalte oder deine Rechte reichen nicht aus, usw usw usw... Das wären alles SQLExceptions.

aber was würde passieren, wenn der SQLserver down ist und ich nicht die SQLException benutze sondern die Exception ?

Würde ich dann keine Fehlermeldung ala:"SQL server ist busy oder steht nicht zur Verfügung" bekommen?
 

Noctarius

Top Contributor
Doch sicher würdest du die bekommen, da SQLException von Exception abgeleitet ist. Aber es ist in bestimtmen fällen so, dass man eine gewisse Exception haben möchte aber eine Andere nicht.

Allgemein sollte man versuchen Fehler möglichst spezifisch abzufangen (sonst hätte die Aufsplittung ja wohl kaum Sinn).
 
W

waldemar

Gast
Code:
catch (SQLException e)
{  
System.out.println(e);
}

was wäre wenn ich obige variable e nicht ausgebe sondern einfach ein JOptionPane mache mit dem Text:

JOptionPane.showMessageDialog(null, "SQL Server antwortet nicht","Sever down",JOptionPane.ERROR_MESSAGE);

dies versuchte ich schon mal und es klappte nicht nur wenn ich die variable e noch an obigen String

"SQL Server antwortet nicht" + e ranhänge hat es funktioniert ??
 
W

waldemar

Gast
Doch sicher würdest du die bekommen, da SQLException von Exception abgeleitet ist.
aber das sagt doch schon alles und du sagst es selbst. Warum sollte ich dann andere Exceptions außer die Exception Mutter aller Ausnahmen benutzen, wenn ich sowieso eine konkrete Ausgabe bekomme? Das erklär mir jetzt mal, danke!

:D
 

Wildcard

Top Contributor
Weil verschiedene Operationen auch mehrere Exceptions werfen können und du ExceptionA anders behandeln willst als ExceptionB.
Ausserdem werden zum Teil auch eigene Exceptions definiert, denen eigene Parameter mitgegeben werden.
 

Jango

Gesperrter Benutzer
Wenn du beispielsweise mit Dateien arbeitest, weißt du gar nicht, welcher Fehler gerade auftritt, wenn du nur die "globale" Exception abfängst. Ist die Datei nicht da - ist der Pfad falsch, u.s.w.. Die Fehlersuche wird zum Abenteuer.
Wenn es keinen Sinn hätte, verschiedene Exceptions abzufangen, hätten die Macher von Java sich bestimmt nicht die Mühe gemacht. :wink:
 
W

waldemar

Gast
Wildcard hat gesagt.:
Weil verschiedene Operationen auch mehrere Exceptions werfen können

Das ist z.B. ein Grund den ich verstehe, denn bei der super Exception hätte ich ja keine differenzierte Ausgabe.

das gleiche natürlich auch bei Jango.

Also bin ich der Meinung kann man von Fall zu Fall abwägen ob man die super Exception angibt oder eine der abgeleiteten Klassen, wie seht Ihr das?
 

Hilefoks

Bekanntes Mitglied
Wenn du immer ganz allgemein Exception fängst, fängst du damit auch alle Programmierfehler. Meiner Meinung nach sollte man niemals eine normale Exception fangen und auch nie selbst eine auslösen - sondern immer eine abgeleitete.

Code:
void foo(Object o) {
    try {
        doSomething(o.toString());
    } catch(Exception e) {
        //....
    }
}

Kein tolles Beispiel, aber egal. Hier wird z.B. auch der Programmierfehler (o könnte null sein) verluckt und natürlich auch jeder andere Programmierfehler in doSomething()...

Wie gesagt: Für mich sind normale Exceptions (und ein paar andere wie NullPointerException) immer Programmierfehler und werden von mir nie gefangen. Sollte eine solche Exception auftreten habe ich einen Fehler gemacht. Im Fall einer NullPointerException habe ich z.B. versäumt diesen Fall zu testen.

MfG,
Hilefoks
 
W

waldemar

Gast
Hilefoks hat gesagt.:
Wenn du immer ganz allgemein Exception fängst, fängst du damit auch alle Programmierfehler. Meiner Meinung nach sollte man niemals eine normale Exception fangen und auch nie selbst eine auslösen - sondern immer eine abgeleitete.

Code:
void foo(Object o) {
    try {
        doSomething(o.toString());
    } catch(Exception e) {
        //....
    }
}

Kein tolles Beispiel, aber egal. Hier wird z.B. auch der Programmierfehler (o könnte null sein) verluckt und natürlich auch jeder andere Programmierfehler in doSomething()...

Wie gesagt: Für mich sind normale Exceptions (und ein paar andere wie NullPointerException) immer Programmierfehler und werden von mir nie gefangen. Sollte eine solche Exception auftreten habe ich einen Fehler gemacht. Im Fall einer NullPointerException habe ich z.B. versäumt diesen Fall zu testen.

MfG,
Hilefoks
da haste recht , das beispiel ist so abwegig bzw. realitätsfern das ich Probleme mit dem Verstehen habe :lol: wieso könnte "o" auch "0" sein? 0.troString() ist doch quark...

Hat jemand ein realistisches Beispiel so mitten aus dem Leben :wink:
 

Noctarius

Top Contributor
Wildcard hat gesagt.:
Für mich ist es ein sehr großer Unterschied ob ich eine NullPointer, eine IllegalArgument, oder eine OutOfBoundsException bekomme...
Noctarius hat gesagt.:
Allgemein sollte man versuchen solche Exceptions zu vermeiden ;)

Seh ich genauso, sowas sollte man nicht per Try/Catch abfangen sondern vorher schon wissen ob es sein könnte und evtl darauf testen bevor man etwas tut.

@ Waldemar: Null ist nicht der Zahlenwert 0, sondern ein Nullobjekt. Jedes nicht klar initialisierte Objekt ist erstmal ein Nullobjekt. Das heisst einfach soviel wie "mir wurde noch keine Referenz zugewiesen".

Damit ist objekt.Test() nicht möglich wenn objekt==null ist, weil es auf kein verwendbares Objekt verweisst.
 

NTB

Bekanntes Mitglied
Du lässt den Benutzer eine Datei angeben und versuchst diese mit Java zu öffnen. Wenn Du nur "Exception" abfängst, kann Dein Programm nicht unterscheiden, ob die Datei nicht vorhanden war, also der Dateiname falsch (FileNotFoundExcepion), oder ob es Schwierigkeiten gab, die Datei zu lesen (IOException). Das sind grundlegend verschiedene Probleme, auf die Dein Programm auch verschieden reagieren sollte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
P Exception werfen Java Basics - Anfänger-Themen 15
M Exception werfen und bearbeiten Java Basics - Anfänger-Themen 1
3 Methoden Exception werfen oder nicht Java Basics - Anfänger-Themen 6
A Exception aus Thread werfen Java Basics - Anfänger-Themen 14
I Exception nicht werfen lassen Java Basics - Anfänger-Themen 3
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
S Exception werfen Java Basics - Anfänger-Themen 2
G Comparator- methode compare exception werfen Java Basics - Anfänger-Themen 4
G Exception werfen Java Basics - Anfänger-Themen 4
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
D Exception werfen Java Basics - Anfänger-Themen 10
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben