Exceptions - wann / wie verwenden?

M

Mondkled

Neues Mitglied
Hallo. In meinem Studium müssen wir nun eigene Software-Projekte entwickeln. Da habe ich eine Frage über Exceptions: Was sie sind habe ich soweit verstanden. Aber:
1. Muss man sie immer verwenden? Also bei jeder Methode und bei jeder Klasse? Oder nur bei Methoden, wo ein Input vom User verlangt wird?
2. Ist der Aufbau immer im try{} catch{} Block? Oder kann man Exceptionhandling auch mit If-Statements (wenn man Eingaben nach was bestimmten suchen will) in Methoden machen?
 
MoxxiManagarm

MoxxiManagarm

Top Contributor
1. Muss man sie immer verwenden? Also bei jeder Methode und bei jeder Klasse? Oder nur bei Methoden, wo ein Input vom User verlangt wird?

Exceptions sind wie der Name schon sagt: Ausnahmen. Das sind schlicht Fehlerfälle und können in verschiedenen Kontexten auftreten, nicht nur bei Userinputs. Es gibt auch viele Fälle wo keine Ausnahmen zu erwarten sind, entsprechend brauchst du doch auch keine Exceptions fangen.

2. Ist der Aufbau immer im try{} catch{} Block? Oder kann man Exceptionhandling auch mit If-Statements (wenn man Eingaben nach was bestimmten suchen will) in Methoden machen?

Ja das ist der Aufbau von Exceptionshandling. Es ist jedoch eine gute Vorgehensweise mit if-Statements eine bestimmte Exception vorher auszuschließen anstatt ein Exceptionhandling vorzunehmen, sofern möglich und sinnvoll.

Beispiele:
- eine Referenz auf null zu prüfen bevor du auf sie zugreifst um eine NullPointerExption auszuschließen
- einen String auf Zahlen-Characters zu prüfen, bevor du ihn zu int parsed um eine NumberFormatException auszuschließen
- eine Datei prüfen ob sie tatsächlich existiert bevor du versuchst sie zu öffnen um eine IOException auszuschließen
- ...

Für die if-Bedingungen benötigst du dann in der Regel ein Ausnahmeverhalten (else), was mit sinnvoll gemeint ist.
 
Zuletzt bearbeitet:
L

LimDul

Top Contributor
Exceptions sind Ausnahmen. Es gibt dabei (grob) zwei Klassen.

a) Ausnahmen, die eigentlich nicht auftreten sollen und die mit sauberer Programmierung abgefangen werden sollten. Die werden von RunTimeException abgeleitet. Klassiker ist z.B. die IllegalArgumentException. Beispiel:

Java:
public Person(int alter) {
if (alter <0) { throw new IllegalArgumentException("Das Alter darf nicht kleiner als 0 sein"); }
}
Dies sind Ausnahmen, die sollte man nicht per try - catch fangen. Den stattdessen sollte man vorher prüfen, ob das alter kleiner 0 ist und dann das Person Objekt gar nicht erzeugen.


b) Das andere sind Ausnahmen, die man auch bei sauberer Programmierung nicht 100% verhindern kann. Der Klassiker ist hier z.B. die IO-Exception. Wenn ich Daten über das Netzwerk schicke, muss ich immer damit rechnen, dass das schiefgeht, weil z.B. die Verbindung zusammenbricht. Diese werden in der Regel von Exception abgeleitet und sind sogenannte checked Exceptions, das heißt man muss die im Methodenkopf definieren und der Aufrufer muss sie entweder mit try/catch behandeln oder weiterwerfen.
Diese nutzt aber nur für Dinge, die zwar Ausnahmen sind, man aber nicht 100% vermeiden kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Wann und wie Exceptions einsetzen? Allgemeine Java-Themen 13
W Exceptions behandeln Allgemeine Java-Themen 16
Kirby.exe Exceptions erklärt Allgemeine Java-Themen 5
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
J Exceptions Allgemeine Java-Themen 1
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
L Nullpointer Exceptions werden nicht angezeigt Allgemeine Java-Themen 5
V Exceptions Allgemeine Java-Themen 2
G Exceptions mit jre 7u40 Allgemeine Java-Themen 2
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
E LookAndFeel Exceptions bei UIManager.setLookAndFeel Allgemeine Java-Themen 4
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
C Threads und Exceptions Allgemeine Java-Themen 7
B Webstart Exceptions Allgemeine Java-Themen 7
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
G Internationalisierung von Exceptions Allgemeine Java-Themen 5
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
F Alle Exceptions abfangen Allgemeine Java-Themen 4
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
G log4j - Behandlung nicht explizit abgefangener Exceptions Allgemeine Java-Themen 5
B Logging von Exceptions Allgemeine Java-Themen 7
G Designfrage: Exceptions in Konstruktoren Allgemeine Java-Themen 7
I Exceptions - weder catch- noch finally-Klausel funktioniert Allgemeine Java-Themen 12
M Verwendung von unchecked exceptions & bereits vorhandenen exceptions was priorisieren Allgemeine Java-Themen 3
hdi Verhalten bei nicht behandelten Exceptions Allgemeine Java-Themen 2
H Exceptions und IO Allgemeine Java-Themen 17
B Exceptions? Allgemeine Java-Themen 4
D Throws Exceptions Allgemeine Java-Themen 14
M Verständnisfrage Exceptions Allgemeine Java-Themen 2
V Exceptions als Fehlerbehandlung "missbrauchen"? Allgemeine Java-Themen 10
DEvent Wie behandelt man Exceptions in Iterator? Allgemeine Java-Themen 2
J Verständnisfrage zu exceptions Allgemeine Java-Themen 3
A Junit Exceptions testen Allgemeine Java-Themen 3
R Loading-Thread und Exceptions abfangen. Allgemeine Java-Themen 4
P Exceptions dokumentieren. Allgemeine Java-Themen 6
G Exceptions weiterwerfen Allgemeine Java-Themen 2
T Generics und Exceptions Allgemeine Java-Themen 6
P Exceptions throw Allgemeine Java-Themen 6
J Method.invoke -> Exceptions der Funktion abfangen Allgemeine Java-Themen 5
T Frage zu Exceptions Allgemeine Java-Themen 3
G Java-Exceptions werden nicht ganz angezeigt. Wo ändern? Allgemeine Java-Themen 3
J Probleme mit Exceptions Allgemeine Java-Themen 11
R Exceptions mit aktuellen Programminformationen ausgeben? Allgemeine Java-Themen 2
märliprinz com.sap.dbtech.jdbc.exceptions.JDBCDriverException Allgemeine Java-Themen 2
G Alle Exceptions loggen Allgemeine Java-Themen 4
G Frage zu Exceptions Allgemeine Java-Themen 6
M err oder alle Exceptions eines Programms abfangen Allgemeine Java-Themen 4
G Exceptions ohne Zeilennummer (Unknown Source) Allgemeine Java-Themen 8
T Exceptions im statischem Klassencode Allgemeine Java-Themen 5
L Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
N Streams wann .filtern? Allgemeine Java-Themen 2
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
T GUICE- Dependency Injection- WANN nutze ich Providers? Allgemeine Java-Themen 2
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
M Wann ist MVC sinnvoll? Allgemeine Java-Themen 14
M Wann Membermethoden, wann statische Utility-Methoden? Allgemeine Java-Themen 24
Ark Wann 64 Bit-Befehle im Einsatz? Allgemeine Java-Themen 6
G Wann normale Exception und wann Runtimeexception Allgemeine Java-Themen 12
Y Wann folgende Technologien benutzen Allgemeine Java-Themen 5
G Parameter oder Attribut (wann nehme ich was?) Allgemeine Java-Themen 12
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
G Wann statische Methoden, statische Attributen? Allgemeine Java-Themen 7
G Ab wann Datenbank verwenden Allgemeine Java-Themen 15
B Wann Interface und wann Adapter Allgemeine Java-Themen 4
B ObjectInputStream - Wann ist Ende erreicht? Allgemeine Java-Themen 10
D Wann ist das ergebnis einer Rechnung eine Double? Allgemeine Java-Themen 7
M Maximal verfügbarer Hauptspeicher? Ab wann wird ausgelagert? Allgemeine Java-Themen 13
P Wann kommt denn nun 1.5 überhaupt? Allgemeine Java-Themen 6
H lokale Variable bei Optional verwenden Allgemeine Java-Themen 11
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
D API Keys mehrmals verwenden Allgemeine Java-Themen 6
K For-Schleife <> oder != Operator verwenden? Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
J PDFBox kommerziell verwenden Allgemeine Java-Themen 15
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
M Java Mail verwenden Allgemeine Java-Themen 20
N Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
J Interface Wofür Interfaces in Java verwenden? Allgemeine Java-Themen 3
N Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
O 3D-Grafik java3D in eclipse verwenden Allgemeine Java-Themen 0
J Allgemein gültige Klasse/Methode mehrfach verwenden Allgemeine Java-Themen 11
R Threads ReentrantLock mehrfach verwenden Allgemeine Java-Themen 3
J Interface Interface für Framework verwenden Allgemeine Java-Themen 4
G Services verwenden sich gegenseitig Allgemeine Java-Themen 4
R Dateimanager verwenden Allgemeine Java-Themen 2
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
N VB Code in Java verwenden Allgemeine Java-Themen 5
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben