Benutzer-Werkzeuge

Webseiten-Werkzeuge


techniken:objektorientjava2

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
techniken:objektorientjava2 [2016/07/20 16:12]
c.jaedicke [Exception Handling]
techniken:objektorientjava2 [2016/07/21 15:02] (aktuell)
c.jaedicke [Exception Handling]
Zeile 123: Zeile 123:
 ===== Exception Handling ===== ===== Exception Handling =====
 In diesem Abschnitt geht es um Fehlerbehandlung von Fehlern die zur Laufzeit eures Programmes auftreten. Das sind alle Fehler die nicht schon beim Kompilieren eures Codes auftreten. Dazu gehören Fehler wie versuchter Zugriff auf bisher nicht erzeugte Objekte oder Division durch Null. \\ In diesem Abschnitt geht es um Fehlerbehandlung von Fehlern die zur Laufzeit eures Programmes auftreten. Das sind alle Fehler die nicht schon beim Kompilieren eures Codes auftreten. Dazu gehören Fehler wie versuchter Zugriff auf bisher nicht erzeugte Objekte oder Division durch Null. \\
-Im Gegensatz zu anderen Programmiersprachen,​ wie etwa C, muss in Java ein Fehler nicht gleich zum Programmabsturz führen. Solche Fehler werden in Java als //​Exceptions//​ behandelt und können abgefangen werden. ​+Im Gegensatz zu anderen Programmiersprachen,​ wie etwa C, muss in Java ein Fehler nicht gleich zum Programmabsturz führen. Solche Fehler werden in Java als //​Exceptions//​ behandelt und können abgefangen werden. ​Am Beispiel der Roboter-Klasse führen wir eine Null-Pointer-Exception herbei, indem wir das Robot-Objekt nicht initialisieren und trotzdem versuchen die drawRobot-Methode aufzurufen:​ 
 +<code java> 
 +Robot myRobot; 
 + 
 +void setup() { 
 +  size(199,​199);​ 
 +
 + 
 +void draw() { 
 +    myRobot.drawRobot();​ 
 +
 +</​code>​ 
 +Dieser Code führt zum Abbruch des Programms und es wird der Hinweis //​NullPointerException//​ ausgegeben. Der Vorteil des sogenannten try-catch-Blocks ist das der Fehler nicht zum Absturz führt und eine detaillierte Fehlerausgabe mit Angabe der fehlerhaften Programmzeile generiert wird. 
 +<code java> 
 +Robot myRobot; 
 +void setup() { 
 +  size(199,​199);​ 
 +
 +void draw() { 
 +  try 
 +  { 
 +    myRobot.drawRobot();​ 
 +  } 
 +  catch(Exception e) 
 +  { 
 +    println("​Exception:​ " + e.getMessage());​ 
 +    e.printStackTrace();​ 
 +  } 
 +
 +</​code>​ 
 +Die Ausgabe zeigt euch den Pfad in dem der Fehler aufgetreten ist, wobei die erste Zeile eure Message ist, die zweite der Exception-Typ und die dritte gibt euch am Ende der Zeile die entsprechende Zeile in eurem Code: 
 +<​code>​ 
 +Exception: null 
 +java.lang.NullPointerException 
 + at sketch_160720a.draw(sketch_160720a.java:​24) 
 + at processing.core.PApplet.handleDraw(PApplet.java:​2402) 
 + at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:​1527) 
 + at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:​316) 
 +</​code>​ 
 + 
 +<note important>​Processing fügt eurem Code vor dem Kompilieren noch einige Zeilen Code hinzu, daher verschiebt sich die Zeilenangabe etwas. Die Verschiebung müsst ihr experimentell feststellen!</​note>​
techniken/objektorientjava2.1469023964.txt.gz · Zuletzt geändert: 2016/07/20 16:12 von c.jaedicke