Wenn es eine throw
-Anweisung in der Mitte einer Funktion gibt, endet die Funktion an diesem Punkt?
Ja, mit Ausnahme von finally
Blöcken, oder wenn in der Funktion ein Ausnahmebehandler vorhanden ist, der den Typ der von Ihnen geworfenen Ausnahme abfangen kann.
Das Steuerelement wird an den nächsten Ausnahmebehandler ( catch
block) im Aufrufstapel übergeben, unabhängig davon, ob es sich um die aktuelle Methode oder einen seiner übergeordneten Parameter handelt. Wenn die throw
nicht in einem try / catch-Block gekapselt ist, werden alle finally
-Bausteine ausgeführt, bevor ein übergeordneter catch-Block gesucht wird.
Hast du es versucht? :)
Ich denke, die richtige Antwort ist, es kommt darauf an. Wenn du den Wurf mit einem Versuch / Fang aus irgendeinem seltsamen Grund umhüllst, dann nein. Wenn Sie das nicht getan haben, dann ja, es sei denn, Sie haben die Ausnahme nicht irgendwo im Call-Stack gefunden, in diesem Fall stürzt Ihre gesamte Anwendung ab.
Ja, es sei denn, Sie fangen es ab oder blockieren es endgültig:
%Vor%Ja, ja. Es erzeugt eine Ausnahme, die den aufrufenden Stapel hinaufgeht.
Eine Ausnahme ist ein Ereignis, das passierte, wenn es nicht geschehen sollte, und daher weiß die Anwendung nicht, was mit einem solchen Ereignis geschehen soll. In allen OOP-Sprachen, die ich kenne, ist es die Laufzeit, die Funktion, die das Ereignis aufgerufen hat, anzuhalten und dann die Ausnahme auf den Stapel zu werfen, bis jemand weiß, was damit zu tun ist. Hier kommen die try / catch-Blöcke ins Spiel.
Tags und Links c# exception-handling throw