Fehler fangen
Fehler können in jedem Programm auftreten. In kleinen Skripten wird die Fehlerbehandlung eher ignoriert, in größeren Programmen ist ein gutes Fehlermanagement definitiv sinnvoll. Wird ein Fehler nicht gefangen, beendet sich die gesamte Anwendung.
Fehler einfangen
Die einfachste Methode um einen Fehler kontrolliert zu fangen ist Try-Catch:
Try
Print 'a'
Print 5 / 0
Print 'b'
.catch.show
Hier wird ein "Try"-Objekt erzeugt und die Auto-Block-Funktion ".block" ausgeführt. Das 'a' wird noch ausgegeben, 'b' jedoch nicht mehr, da in der Zeile davor ein Fehler auftritt. Die Funktion ".block" gibt nun den Fehler zurück.
Die Funktion "catch" prüft nun, ob das aktuelle Objekt im Stream ein Fehler ist und führt ggf. den angehängten Block/Stream aus. Ein ".show" gibt den Fehler vollständig aus.
Alternativ läßt sich ein Fehler auch mit der Objekt-Funktion ".try" einfangen.
5.try
( it / 0 ).print
.catch.show
Das Ergebnis ist identisch. Diese Variante ist hier weiter erklärt: "Flow - Fehlerverarbeitung"
Die Funktion ".show" ist direkt eine Funktion des Fehlers selbst.
Auswerten
Ein Fehler ist ebenso ein "normales" Objekt. Ein Fehler wird mit einem "Try" oder ".try" eingefangen und kann mit ".catch" ausgewertet werden.
Jeder Fehler enthält folgende Informationen, welche mit der zugehörigen Funktion ausgelesen werden können:
Information | Funktion |
---|---|
|
Fehler-Gruppe |
|
Nachricht |
|
Detail |
|
Befehl |
|
Instanz |
|
Quelle (Datei und Zeile) |
|
Datei |
|
Zeilennummer |
Im ".catch"-Block lassen sich die einzelnen Daten ausgeben:
Try
5 / 0
.catch.show
Print it.group
Print it.message
Print it.detail
Print it.file
Print it.line