| |
C-Sprache, die Ausnahmen Aug. 1997 Anfassend Abbildet 1-27 1 Fall, das Ausnahmestruct muß mit dem passenden T__alloc() zugeteilt werden Funktion und das CORBA_exception_set() Funktion nimmt zugeteilt an Gedächtnis und gibt sie frei, wenn es es nicht mehr benötigt. Einmal die zugeteilte Ausnahme struct wird bis CORBA_exception_set() geführt wird die Anwendung nicht zu erlaubt machen Sie sie zugänglich, weil sie sie nicht mehr besitzt. Wenn die Ausnahme keine Parameter nimmt, Param muß UNGÜLTIG sein. Wenn das CORBA_Environment Argument bis CORBA_exception_set() hat bereits eine Ausnahme stellte in sie, diese Ausnahme wird freigegeben richtig vor der neuen Ausnahme ein Informationen werden eingestellt. CORBA_exception_id() bringt einen Zeiger zum Zeichenfolgekennzeichnen zurück Ausnahme. Die Zeichenfolge enthält den Behälter Identifikation für die Ausnahme. Wenn Sie hervorgerufen werden auf einem CORBA_Environment welches eine Nichtausnahme kennzeichnet, (_ major==CORBA_NO_EXCEPTION wird ein ungültiger Zeiger zurückgebracht. Merken Sie diesen Besitz vom zurückgebrachten Zeiger bringt nicht auf den Anrufer; stattdessen bleibt der Zeiger gültig bis CORBA_exception_free() wird benannt. CORBA_exception_value() bringt einen Zeiger zur Struktur zurück, die entspricht diese Ausnahme. Wenn Sie auf einem CORBA_Environment hervorgerufen werden welches a nicht kennzeichnet Ausnahme oder eine Ausnahme, für die es keine dazugehörigen Informationen gibt, ein ungültiger Zeiger ist zurückgegangen. Merken Sie, daß Besitz des zurückgebrachten Zeigers nicht auf den Anrufer bringt; stattdessen bleibt der Zeiger bis CORBA_exception_free() gültig wird benannt. CORBA_exception_free() gibt jede mögliche Ablage frei, die in zugeteilt wurde Aufbau des CORBA_Environment oder angenommen bei CORBA_Environment wenn CORBA_exception_set() wird um ihm ersucht und einstellt der _ Major Feld zu CORBA_NO_EXCEPTION . Hervorzurufen ist zulässig CORBA_exception_free() unabhängig davon den Wert von _ Major Feld. CORBA_exception_as_any() bringt einen Zeiger zu a zurück CORBA_any Enthalten Ausnahme. Dieses läßt eine c-Anwendung Ausnahmen beschäftigen, für die sie keinen Static hat (Kompilierzeit) Informationen. Wenn Sie auf einem CORBA_Environment hervorgerufen werden welches a kennzeichnet Nichtausnahme, ein ungültiger Zeiger wird zurückgebracht. Merken Sie diesen Besitz des zurückgebrachten Zeigers bringt nicht auf den Anrufer; stattdessen bleibt der Zeiger bis gültig CORBA_exception_free() wird benannt. Betrachten Sie das folgende Beispiel: // IDL SchnittstellenexampleX { Ausnahme BadCall { string<80 > Grund; }; leeres op()raises(BadCall); }; Diese Schnittstelle definiert einen einzelnen Betrieb, der keine Resultate zurückbringt und a anheben kann BadCall Ausnahme. Der folgende Benutzercode zeigt, wie man den Betrieb hervorruft und erholen Sie von einer Ausnahme: |  |
|
| |
|
|