• Keine Ergebnisse gefunden

Exception handling

N/A
N/A
Protected

Academic year: 2021

Aktie "Exception handling"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Exception handling

Bei der Ausführung von Code kann es zu Ausnahmesituationen kommen. Bekannte

Beispiele sind der Zugiff auf ein Arrayelement, das außerhalb des Indexbereiches liegt, Nulldivision, Ein-/Ausgabefehler ect..

Bei der Ausführung von Code kann es zu Ausnahmesituationen kommen. Bekannte

Beispiele sind der Zugiff auf ein Arrayelement, das außerhalb des Indexbereiches liegt, Nulldivision, Ein-/Ausgabefehler ect..

(2)

In c musste man mit bedingten Anweisungen (if-

Anweisung) derlei Situationen im Vorfeld abfragen.

FILE pf=NULL;

if (argc!=2) {fprintf(stderr, “usage %s <file>\n“,argv[0]); exit(-1);}

else {

pf=fopen(argv[1]);

if (pf==NULL){fprintf(stderr, “error opening %s\n“,argv[1]); exit(-1);}

else {

. . .

fclose(pf);

} }

FILE pf=NULL;

if (argc!=2) {fprintf(stderr, “usage %s <file>\n“,argv[0]); exit(-1);}

else {

pf=fopen(argv[1]);

if (pf==NULL){fprintf(stderr, “error opening %s\n“,argv[1]); exit(-1);}

else {

. . .

fclose(pf);

} }

(3)

Java bietet dafür, wie auch andere objektorientierte Sprachen, Exceptionhandling

Exception: Ausnahme- /Fehlersituation

Dabei wird Code in dem Exceptions auftreten können, in sogenannte try -Blöcke gesetzt.

Kommt es nun zu einer Ausnahmesituation, z.Bsp.

durch eine Indexverletzung bei einem Arrayzugriff, so wird eine Exception geworfen.

Über eine oder mehere catch-Klauseln (to catch : fangen) kann nun eine geworfene Exception

aufgefangen werden.

Java bietet dafür, wie auch andere objektorientierte Sprachen, Exceptionhandling

Exception: Ausnahme- /Fehlersituation

Dabei wird Code in dem Exceptions auftreten können, in sogenannte try -Blöcke gesetzt.

Kommt es nun zu einer Ausnahmesituation, z.Bsp.

durch eine Indexverletzung bei einem Arrayzugriff, so wird eine Exception geworfen.

Über eine oder mehere catch-Klauseln (to catch : fangen) kann nun eine geworfene Exception

aufgefangen werden.

(4)

Try / catch

class tryDemo {

public static void main(String args[]) {

int array[]={2,4,6,8,10,12};

int i=0;

try {

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

}

}catch (IndexOutOfBoundsException ex1) {

System.out.println("Exception ist aufgetreten");

}

System.out.println("Das Programm geht weiter, es gibt keinen Absturz");

}

class tryDemo {

public static void main(String args[]) {

int array[]={2,4,6,8,10,12};

int i=0;

try {

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

}

}catch (IndexOutOfBoundsException ex1) {

System.out.println("Exception ist aufgetreten");

}

System.out.println("Das Programm geht weiter, es gibt keinen Absturz");

} }

(5)

5

catch

Auf einen try-Block können mehrere catch- Klauseln, die unterschiedliche Exceptions auffangen, folgen.

Eine Klausel catch(Exception e) fängt alle

Exceptions auf und sollte entweder allein oder als letzte catch-Klausel stehen.

Im einfachsten Falle gibt die catch-Klausel etwas aus oder bleibt leer.

Auf einen try-Block können mehrere catch- Klauseln, die unterschiedliche Exceptions auffangen, folgen.

Eine Klausel catch(Exception e) fängt alle

Exceptions auf und sollte entweder allein oder als letzte catch-Klausel stehen.

Im einfachsten Falle gibt die catch-Klausel etwas aus oder bleibt leer.

(6)

catch

Das Exceptionobjekt selbst kann auch ausgegeben werden.

Das wird oft verbunden mit einem Aufruf der Methode printStackTrace(), die die Aufruffolge der Funktionen bis hin zur Exception ausgibt.

Das Exceptionobjekt selbst kann auch ausgegeben werden.

Das wird oft verbunden mit einem Aufruf der Methode printStackTrace(), die die Aufruffolge der Funktionen bis hin zur Exception ausgibt.

try {

. . .

}catch (IndexOutOfBoundsException ex1) {

System.out.println("Exception: "+ ex1);

Ex1.printStackTrace();

} try {

. . .

}catch (IndexOutOfBoundsException ex1) {

System.out.println("Exception: "+ ex1);

Ex1.printStackTrace();

}

Eingebaut in obiges Beispiel wird die angegebene Ausgabe erzeugt. Dabei ist 6 der Index der zur Ausnahmesituation geführt hat.

Eingebaut in obiges Beispiel wird die angegebene Ausgabe erzeugt. Dabei ist 6 der Index der zur Ausnahmesituation geführt hat.

(7)

7

Nebenstehendes Beispiel erzeugt die angegebene

Ausgabe. Dabei ist 6 der Index der zur Ausnahmesituation geführt hat.

Nebenstehendes Beispiel erzeugt die angegebene

Ausgabe. Dabei ist 6 der Index der zur Ausnahmesituation geführt hat.

(8)

Exceptions / Funktionen

In der Java Classlibrary gibt es viele Funktionen, die u. Ust. Exceptions werfen.

Werden solche Funktionen verwendet, verpflichtet Java den Aufrufer, diese Funktionensaufrufe in

try/catch zu kapseln.

Der Compiler erzeugt ggf. Fehlermeldungen.

In der Java Classlibrary gibt es viele Funktionen, die u. Ust. Exceptions werfen.

Werden solche Funktionen verwendet, verpflichtet Java den Aufrufer, diese Funktionensaufrufe in

try/catch zu kapseln.

Der Compiler erzeugt ggf. Fehlermeldungen.

(9)

9

Exceptions / Funktionen

Will oder kann man das Exceptionhandling innerhalb einer Funktion nicht ausprogrammieren, das kann ganz unterschiedliche Gründe haben, können Exceptions weitergeleitet werden.

throws IOException, angegeben hinter der Parameterliste einer

Funktion, bewirkt, dass eine IOException, die in der Funktion auftritt, an den Aufrufer weitergeleitet wird.

Damit muss der Aufruf dieser Funktion dann in einem try-Block geschehen.

Die Angabe von throws Exception hinter der main-Funktion leitet alle Exceptions von main an die Virtuelle Maschine weiter.

Will oder kann man das Exceptionhandling innerhalb einer Funktion nicht ausprogrammieren, das kann ganz unterschiedliche Gründe haben, können Exceptions weitergeleitet werden.

throws IOException, angegeben hinter der Parameterliste einer

Funktion, bewirkt, dass eine IOException, die in der Funktion auftritt, an den Aufrufer weitergeleitet wird.

Damit muss der Aufruf dieser Funktion dann in einem try-Block geschehen.

Die Angabe von throws Exception hinter der main-Funktion leitet alle Exceptions von main an die Virtuelle Maschine weiter.

public static void main(String args[]) throws Exception {

. . .

public static void main(String args[]) throws Exception {

. . .

(10)

class ThrowsDemo1 {

public static void main(String args[])throws Exception { int array[]={2,4,6,8,10,12};

int i=0;

{

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

} }

}}

class ThrowsDemo1 {

public static void main(String args[])throws Exception {

int array[]={2,4,6,8,10,12};

int i=0;

{

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

} }

} }

(11)

11

Exceptions werfen

class ThrowsDemo2 {

public static void main(String args[])throws Exception {

int array[]={2,4,6,8,10,12};

int i=0;

{

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

if (i==array.length) throw new Exception("index exception: "+i+" max allowed: "+array.length);

} } } }

class ThrowsDemo2 {

public static void main(String args[])throws Exception {

int array[]={2,4,6,8,10,12};

int i=0;

{

while(true) {

System.out.printf("array[%d]: %d\n",i, array[i]);

i++;

if (i==array.length) throw new Exception("index exception: "+i+" max allowed: "+array.length);

} } } }

Über

throw (new Exception(“message“));

Kann eine Exception geworfen (signalisiert) werden.

Über

throw (new Exception(“message“));

Kann eine Exception geworfen (signalisiert) werden.

array[0]: 2 array[1]: 4 array[2]: 6 array[3]: 8 array[4]: 10 array[5]: 12

Exception in thread "main" java.lang.Exception: index exception: 6 max allowed: 6 at ThowsDemo.main(ThowsDemo.java:13)

array[0]: 2 array[1]: 4 array[2]: 6 array[3]: 8 array[4]: 10 array[5]: 12

Exception in thread "main" java.lang.Exception: index exception: 6 max allowed: 6 at ThowsDemo.main(ThowsDemo.java:13)

Referenzen

ÄHNLICHE DOKUMENTE

Das bedeutet, dass zu jeder Methode (Frame) eine eigene Exception-Table zugewiesen wird. Jeder Catch-Block in der Methode erzeugt jeweils einen Eintrag in der Exception-Table.

Zudem ist das operative Handling mit creos xeno.protect einfach, weil die Membran beidseitig verwendet werden kann und sich dank ihrer hohen Festigkeit gut in Form

Zudem ist das operative Handling mit creos xeno.protect einfach, weil die Membran beidseitig verwendet werden kann und sich dank ihrer hohen Festigkeit gut in Form

Unabsichtlich, weil er ein Tier zertritt; mittelbar, wenn er pflanzliche Nahrung aus monokultu- rellem Anbau zu sich nimmt, in dem Vögel, Feldtiere, Insekten nicht über-

Um, insbesondere mit Blick auf die geplante Umgestaltung der Haupt- und Promenaden- strasse, schon während des Provisoriums Rückschlüsse auf das Verkehrsregime und

• • Die Produktion wird erschwert oder unterbrochen, wenn die Die Produktion wird erschwert oder unterbrochen, wenn die Arbeitskräfte nicht ersetzt werden können.. Das

Diese einleitende Auseinandersetzung mit den Fotos führt sie zu dem Menschen und „seinem“/“ihrem“ Interview (siehe DVD 1), mit dem sie sich nun weiter auseinandersetzen

The simulation approach considers the processes of order picking and truck loading within the warehouse dispatch area of non-cooled perishable items to investigate the