Kap. 12 Ausnahmebehandlung - Exception Handling Beispiel 1:

Werbung
# 133
Kap. 12
Ausnahmebehandlung Exception Handling
# 134
Beispiel 1:
Person() {
try {
byte[] eingabe = new byte [80];
System.out.print ("\nNachnamen: ");
System.in.read (eingabe);
name = new String (eingabe);
eingabe = new byte[80];
System.out.print ("\nVornamen: ");
System.in.read (eingabe);
vorname = new String (eingabe);
}
catch (IOException e){
System.out.println ("Eingabefehler");
System.exit(1);
}
}
Harms: "SoftwareEntwicklung", SWENT, WS 2001/02
- 67 -
# 135
Beispiel 2:
try {
String eingabeN;
System.out.println ("Anzahl: ");
eingabeN = buffer.readLine();
try {
n = Integer.parseInt(eingabeN);
}
catch (NumberFormatException nFExcept){
System.out.println (nFExcept.toString());
System.exit(1);
}
}
catch (IOException ioexcept){
System.out.println (ioexcept.toString());
System.exit(1);
}
#136
generelle Struktur einer try-Anweissung:
try {
.....
//
//
//
//
try-Block, d.h. normaler Code
bei Fehler wird mit throw eine Instanz der entsprechenden ExceptionKlasse geworfen.
}
catch (Exceptiontyp1 name1){
.....
// catch-Block 1
}
// Fehler des Exceptiontyp1 abfangen
catch (Exceptiontyp2 name2){
.....
// catch-Block 2
}
// Fehler des Exceptiontyp2 abfangen
....
// weitere catch-Konstrukte
finally {
.....
// finally-Block
}
// ist optional
// wird immer durchlaufen
Harms: "SoftwareEntwicklung", SWENT, WS 2001/02
- 68 -
# 137
Checked und Unchecked Exceptions
Unchecked Exceptions müssen vom Programmierer weder abgefangen werden, noch in der throws-Klausel der Schnittstelle der
Methode angegeben werden.
Auf unchecked Exceptions wird ein Programm vom Compiler nicht
überprüft.
Unchecked Exceptions sind: RuntimeException und Error.
Alle andereren Exceptions sind Checked Exceptions.
Checked Exceptions müssen vom Programmierer behandelt werden.
Auf Checked Exceptions wird ein Programm vom Compiler überprüft (checked).
#138
Checked Exceptions müssen - wenn sie in einer Methode geworfen
werden, entweder dort in einem Exception Handler behandelt werden oder aber in der throws-Klausel der Methode, welche die
Exception wirft, angegeben werden, um anzuzeigen, dass sie die
entsprechende Exception nach außen weitergibt.
// Datei: Test.java
public class Test {
public main static void main(String[] args){
int[] intarr = new int[4];
for (int i=0; i<8; i++) {
try {
intarr[i]=i;
System.out.println(intarr[i]);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Index zu gross!");
}
}}}
Harms: "SoftwareEntwicklung", SWENT, WS 2001/02
- 69 -
# 139
Ausnahmen ankündigen - die throws-Klausel
// Datei: DatumEingabe.java
import java.util.Dat;
import java.text.*;
public class DatumEingabe {
public Date pruefeDatum (String datum) throws
ParseException {
.....
}
public static void main (String[] args){
....
try {
....
}
catch (ParseException e)
{ System.out.println("Fehler!");}
}
#140
Beispiele für Exceptions
von der Klasse Error abgeleitet:
OutOfMemoryError, StackOverflowError
von der Klasse Exception abgeleitet:
ClassNotFoundException
von der Klasse RuntimeException abgeleitet:
ArithmeticException
// Integer durch 0 geteilt
ArrayIndexOutOfBoundsException
ClassCastException
// Cast nicht möglich
NullPointerException
// versuchter Zugriff auf Klassen// element über null-Referenz
Harms: "SoftwareEntwicklung", SWENT, WS 2001/02
- 70 -
Herunterladen