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.

Wählen Sie oben rechts eine andere Programmiersprache aus.

catchT_catchCatchCatchcatch (Operator)

Name

catchT_catchCatchCatchcatch — Fängt im vorangehenden trytryTryTryTrytry-Block geworfene Exceptions.

Signatur

catch( : : : Exception)

Herror T_catch(Htuple* Exception)

void Catch(HTuple* Exception)

static void HOperatorSet.Catch(out HTuple exception)

def catch() -> Sequence[Union[int, str]]

Beschreibung

Die Operatoren trytryTryTryTrytry, catchcatchCatchCatchCatchcatch, endtryendtryEndtryEndtryEndtryendtry und throwthrowThrowThrowThrowthrow 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 trytryTryTryTrytry, throwthrowThrowThrowThrowthrow und dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheckdev_set_check sowie im „HDevelop User's Guide“.

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

Das wichtigste Fehlerdatum ist der Fehlercode. Daher wird dieser im ExceptionExceptionExceptionExceptionexceptionexception-Tupel immer an erster Stelle zurückgeliefert und kann direkt mit 'Exception'"Exception""Exception""Exception""Exception""Exception"[0] abgefragt werden. Alle anderen Daten müssen über den Operator dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data 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 throwthrowThrowThrowThrowthrow ein benutzerdefiniertes ExceptionExceptionExceptionExceptionexceptionexception-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 ExceptionExceptionExceptionExceptionexceptionexception-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 trytryTryTryTrytry, catchcatchCatchCatchCatchcatch, endtryendtryEndtryEndtryEndtryendtry und throwthrowThrowThrowThrowthrow 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

ExceptionExceptionExceptionExceptionexceptionexception (output_control)  exception-array HTupleSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Tupel mit den Fehlerdaten.

Ergebnis

catchcatchCatchCatchCatchcatch liefert immer TRUE zurück.

Nachfolger

dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data

Siehe auch

trytryTryTryTrytry, endtryendtryEndtryEndtryEndtryendtry, throwthrowThrowThrowThrowthrow, dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data, dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheckdev_set_check

Modul

Foundation