Exception-EndException
Exceptions dienen der Fehlersuche direkt im Programm. Fehlerbehandlung bei Auftreten einer Exception.
Syntax:
- Exception ExceptionName
- Programmcode
- [Raise]
- EndException
ExceptionName | Beschreibung | Raise |
---|---|---|
DivisionByZero1) | Division durch Null in einer Kalkulation aufgetreten | ja |
OutOfBoundsMemory | MemoryBlock Objektgrenze verletzt | ja |
NilObjectException | Objekt auf das sich der Aufruf bezieht existiert nicht | ja |
OutOfSpaceMemory | Arbeitsspeicher voll, Objekt kann nicht alloziert werden | nein |
StackOverflow | Der Stack ist übergelaufen. Siehe auch.. | nein |
Wird ein Exceptionhandler im Programmcode verwendet, werden die jeweiligen Debugfunktionen aktiviert. Die Zugriffsgeschwindigkeiten werden z.T. reduziert und es wird zusätzlicher Speicherplatz im Flash benötigt.
Sofern möglich (siehe Tabelle), kann mit dem Befehl Raise die Programmausführung fortgesetzt werden. Andernfalls wird das Programm nach Auftreten einer Exception durch eine Endlosschleife angehalten (HALT).
Beispiel
' Initialisierung [..] ' Hauptprogramm dim a as byte dim m,m1 as MemoryBlock m.New(100) 'MemoryBlock allozieren mit 100 Bytes a=m.ByteValue(100) 'Löst Exception aus, da außerhalb der Objektgrenzen '(Zugriff hier nur 0-99 erlaubt, Offsets sind Nullbasiert) m1.ByteValue(0)=1 'Zuweisung zu einem nicht existierendes Objekt m1.New(3000) 'mehr Speicher allozieren als vorhanden ist (Programm wird angehalten) do Loop ' Exception-Handler definieren (Aktiviert die Überwachungsfunktionen) Exception OutOfSpaceMemory ' Fehlermeldung ausgeben Print "*** Exception OutOfSpaceMemory ***" EndException Exception OutOfBoundsMemory ' Fehlermeldung ausgeben Print "*** Exception OutOfBoundsMemory ***" Raise ' Programm fortführen EndException Exception NilObjectException ' Fehlermeldung ausgeben Print "*** Exception NilObjectException ***" Raise ' Programm fortführen EndException Exception StackOverflow ' Fehlermeldung ausgeben Print "*** Exception StackOverflow ***" EndException
1)
Ab Version 2015.r1