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.

throwT_throwThrowThrowthrow (Operator)

Name

throwT_throwThrowThrowthrow — Werfen einer benutzerdefinierten oder Weitergeben einer mit catchcatchCatchCatchCatchcatch abgefangenen Exception.

Signatur

throw( : : Exception : )

Herror T_throw(const Htuple Exception)

void Throw(const HTuple& Exception)

static void HOperatorSet.Throw(HTuple exception)

def throw(exception: Sequence[Union[int, str]]) -> None

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 außerdem bei den Operatoren trytryTryTryTrytry und dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheckdev_set_check sowie im „HDevelop User's Guide“.

Der Operator throwthrowThrowThrowThrowthrow erlaubt es, an einer beliebigen Stelle im Programm eine Exception zu werfen. Diese kann dann mit dem catchcatchCatchCatchCatchcatch-Operator eines umgebenen trytryTryTryTrytry-catchcatchCatchCatchCatchcatch-Blocks gefangen werden. Dadurch ist es dem Entwickler möglich, eigene Fehler- oder Ausnahmezustände zu definieren, bei denen die normale Programmausführung -- auch über Prozedurgrenzen hinweg -- abgebrochen und in einen Fehlerbehandlungszweig gesprungen wird, beispielsweise um reservierte Ressourcen freizugeben.

Bei einer solchen anwenderdefinierten Exception kann ein nahezu beliebiges Tupel als ExceptionExceptionExceptionExceptionexceptionexception-Objekt geworfen werden, es sollte lediglich das erste Element des Tupels auf einen Fehlercode >= 30000 gesetzt werden. Können unterschiedliche anwenderdefinierte Ausnahmezustände auftreten, können diese über verschiedene Fehlercodes (>= 30000) im ersten Element oder über zusätzliche Elemente unterschieden werden.

Darüber hinaus erlaubt der throwthrowThrowThrowThrowthrow-Operator eine mit catchcatchCatchCatchCatchcatch gefangene Exception weiter zu werfen. Das ist beispielsweise dann sinnvoll, wenn innerhalb eines inneren trytryTryTryTrytry-catchcatchCatchCatchCatchcatch-endtryendtryEndtryEndtryEndtryendtry-Blocks, z.B. innerhalb einer Prozedur, die anderen Anwendungen bereitgestellt wird, nur auf bestimmte Fehler reagiert werden soll oder kann, und andere Fehler an den Aufrufer weitergereicht werden müssen.

In diesem Fall kann das mit catchcatchCatchCatchCatchcatch gefangene ExceptionExceptionExceptionExceptionexceptionexception-Tupel einfach als ExceptionExceptionExceptionExceptionexceptionexception-Parameter übergeben und direkt weitergereicht werden. Darüber hinaus ist es aber auch möglich, eigene Elemente an das ExceptionExceptionExceptionExceptionexceptionexception-Tupel hinten anzuhängen. Diese können dann in dem äußeren catchcatchCatchCatchCatchcatch-Block mit Hilfe des Operators dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data als 'user_data'"user_data""user_data""user_data""user_data""user_data" abgefragt werden:
trytryTryTryTrytry
...
catch(Exception)catch(Exception)Catch(Exception)Catch(Exception)Catch(Exception)catch(Exception)
...
UserData := ...
throw([Exception, UserData])throw([Exception, UserData])Throw([Exception, UserData])Throw([Exception, UserData])Throw([Exception, UserData])throw([Exception, UserData])
endtryendtryEndtryEndtryEndtryendtry

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 (input_control)  exception-array HTupleSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Tupel mit den Fehlerdaten oder eigenen Fehlercodes.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert throwthrowThrowThrowThrowthrow (als Operator) den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt und ein Fehlercode zurückgeliefert.

Siehe auch

trytryTryTryTrytry, catchcatchCatchCatchCatchcatch, endtryendtryEndtryEndtryEndtryendtry, dev_get_exception_datadev_get_exception_dataDevGetExceptionDataDevGetExceptionDataDevGetExceptionDatadev_get_exception_data, dev_set_checkdev_set_checkDevSetCheckDevSetCheckDevSetCheckdev_set_check

Modul

Foundation