Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

catchT_catchCatchCatch (Operator)

Name

catchT_catchCatchCatch — Fängt im vorangehenden trytryTryTryTry-Block geworfene Exceptions.

Signatur

catch( : : : Exception)

Herror T_catch(Htuple* Exception)

void Catch(HTuple* Exception)

static void HOperatorSet.Catch(out HTuple exception)

Beschreibung

Die Operatoren trytryTryTryTry, catchcatchCatchCatchCatch, endtryendtryEndtryEndtryEndtry und throwthrowThrowThrowThrow erlauben es, in HDevelop-Programme Code für eine dynamische Fehlerbehandlung ähnlich zu den Programmiersprachen C++ oder C# einzubauen. Grundlegende Informationen zur Fehlerbehandlung in HDevelop finden sich bei den Operatoren trytryTryTryTry, throwthrowThrowThrowThrow und dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheck sowie im „HDevelop User's Guide“.

Der Operator catchcatchCatchCatchCatch trennt den zu überwachenden Programmbereich von dem Code, der im Fehlerfall auszuführen ist. Tritt im vorhergehenden trytryTryTryTry-catchcatchCatchCatchCatch-Block kein Fehler auf, wird der gesamte catchcatchCatchCatchCatch-endtryendtryEndtryEndtryEndtry-Block übersprungen. Im Fehlerfall dagegen wird von dem Operator, in dem der Fehler aufgetreten ist, (bzw. vom throwthrowThrowThrowThrow-Operator) direkt zum catchcatchCatchCatchCatch des umschließenden trytryTryTryTry-catchcatchCatchCatchCatch-Blocks gesprungen. Im Ausgabeparameter ExceptionExceptionExceptionExceptionexception wird dem catchcatchCatchCatchCatch-Operator ein Tupel mit den Fehlerdaten bzw. bei throwthrowThrowThrowThrow ein vom Benutzer weitestgehend frei definierbares Tupel übergeben.

Das wichtigste Fehlerdatum ist der Fehlercode. Daher wird dieser im ExceptionExceptionExceptionExceptionexception-Tupel immer an erster Stelle zurückgeliefert und kann direkt mit 'Exception'"Exception""Exception""Exception""Exception"[0] abgefragt werden. Alle anderen Daten müssen über den Operator dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionData abgefragt werden, da sich die Reihenfolge und der Umfang der bereitgestellten Informationen unter Umständen in zukünftigen Versionen ändern und sich beim exportierten Code von Sprache zu Sprache unterscheiden kann. Insbesondere ist zu beachten, dass im exportierten Code nicht alle Informationen verfügbar sind, sowie dass es Informationen gibt, die möglicherweise erst bei einem expliziten Zugriff darauf bereitgestellt werden (wie z.B. Fehlertexte).

Beim Fehlercode handelt es sich bei Operatoraufrufen immer um einen HALCON-Fehlercode (< 10000) bzw. beim Aufruf von Operatoren aus einem Extension Package um einen anwenderdefinierten Fehlercode (> 10000). Die HALCON-Fehlercodes werden im Anhang des „Extension Package Programmer's Manual“ aufgelistet. Wird mit throwthrowThrowThrowThrow ein benutzerdefiniertes ExceptionExceptionExceptionExceptionexception-Tupel geworfen, sollte dieses als erstes Element immer einen Fehlercode >= 30000 als Kennzeichnung enthalten. Alle weiteren Elemente können vollkommen frei gesetzt werden.

Tritt in HDevelop oder der HDevEngine ein Operatorfehler auf, werden im ExceptionExceptionExceptionExceptionexception-Tupel die folgenden Informationen über den Fehler und den Ort seines Auftretens zur Verfügung gestellt:

Für eine automatische Fehlerbehandlung ist vor allem der HALCON-Fehlercode von Bedeutung. Die weiteren Daten haben in erster Linie informativen Charakter. Achtung: Im exportierten Code stehen die Informationen über den Fehlerort nicht oder nur eingeschränkt zur Verfügung.

Achtung

Der Export der Operatoren trytryTryTryTry, catchcatchCatchCatchCatch, endtryendtryEndtryEndtryEndtry und throwthrowThrowThrowThrow ist nur in die Sprachen C++, C# und VisualBasic/.NET möglich, da nur sie das Werfen und Fangen von Exceptions über Prozedurgrenzen hinweg unterstützen. Beim Export nach C können diese Operatoren nicht unterstützt werden.

Parameter

ExceptionExceptionExceptionExceptionexception (output_control)  exception-array HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Tupel mit den Fehlerdaten.

Ergebnis

catchcatchCatchCatchCatch liefert immer 2 (H_MSG_TRUE) zurück.

Nachfolger

dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionData

Siehe auch

trytryTryTryTry, endtryendtryEndtryEndtryEndtry, throwthrowThrowThrowThrow, dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionData, dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheck

Modul

Foundation