


Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung
Die
Microsoft Proprietary
try-exclusive-Anweisung ist eine Microsoft C++-Spracherweiterung, die es einer Anwendung ermöglicht, die Ausführung ordnungsgemäß zu beenden, falls sie auftritt Kontrolle über das Programm zu erlangen. Solche Ereignisse werden als Ausnahmen bezeichnet, und der Mechanismus zur Behandlung von Ausnahmen wird als strukturierte Ausnahmebehandlung bezeichnet.
Ausnahmen können hardware- oder softwarebasiert sein. Selbst wenn sich eine Anwendung nach einer Hardware- oder Software-Ausnahme nicht vollständig erholen kann, kann eine strukturierte Ausnahmebehandlung durch die Anzeige von Fehlerinformationen und die Erfassung des internen Status der Anwendung bei der Diagnose des Problems helfen. Dies ist besonders nützlich bei zeitweise auftretenden Problemen, die nicht einfach reproduziert werden können.
Syntax
try-exclusive-statement:
__try compound-statement
__exclusive ( expression ) compound-statement
__try
Die zusammengesetzte Anweisung nach der Klausel ist ein geschützter Abschnitt . Die zusammengesetzte Anweisung nach der __except
-Klausel ist der Ausnahmebehandler. Wenn während der Ausführung eines Steuerabschnitts eine Ausnahme ausgelöst wird, gibt der Handler eine Reihe von Aktionen an, die ausgeführt werden sollen. Der Ausführungsprozess ist wie folgt:
-
Führen Sie den geschützten Abschnitt aus.
-
Wenn während der Ausführung des geschützten Abschnitts keine Ausnahme auftritt, wird die Ausführung mit der Anweisung nach der
__except
-Klausel fortgesetzt. - Wenn während der Ausführung des geschützten Abschnitts oder in einer vom geschützten Abschnitt aufgerufenen Routine eine Ausnahme auftritt, wird der
__except
-Ausdruck ausgewertet und der zurückgegebene Wert bestimmt die Ausnahmeverarbeitungsmethode. Es gibt drei Werte:
-
EXCEPTION_CONTINUE_SEARCH
Die Ausnahme wird nicht erkannt. Durchsuchen Sie den Stapel weiter nach Handlern, zuerst nach der try-exclusive-Anweisung und dann nach dem Handler mit der nächsthöheren Priorität.
-
EXCEPTION_CONTINUE_EXECUTION
Ausnahme erkannt, aber geschlossen. Die Ausführung wird an der Stelle fortgesetzt, an der die Ausnahme aufgetreten ist.EXCEPTION_EXECUTE_HANDLER
Ausnahmen können identifiziert werden. Übertragen Sie die Kontrolle über den Ausnahmehandler, indem Sie die zusammengesetzte Anweisung__except
ausführen und dann die Ausführung dort fortsetzen, wo die Ausnahme aufgetreten ist.
Da der __except
-Ausdruck als C-Ausdruck ausgewertet wird, ist er auf einen einzelnen Wert, den bedingten Ausdrucksoperator oder den Kommaoperator, beschränkt. Wenn eine umfangreichere Verarbeitung erforderlich ist, kann der Ausdruck eine Routine aufrufen, die einen der drei oben aufgeführten Werte zurückgibt.
![]() |
||||
---|---|---|---|---|
|
![]() |
---|
Für C++-Programme sollte die C++-Ausnahmebehandlung anstelle der strukturierten Ausnahmebehandlung verwendet werden. Weitere Informationen finden Sie unter Ausnahmebehandlung in der C++-Sprachreferenz. |
Jede Routine in einer Anwendung kann ihren eigenen Ausnahmehandler haben. __except
-Ausdrücke werden im Rahmen des __try
-Körpers ausgeführt. Das bedeutet, dass es auf alle dort deklarierten lokalen Variablen zugreifen kann. Das Schlüsselwort
__leave
ist im Anweisungsblock try-exclusive gültig. Der Effekt von __leave
besteht darin, zum Ende des try-exclusive-Blocks zu springen. Die Ausführung wird fortgesetzt, nachdem der Ausnahmehandler beendet ist. Obwohl das gleiche Ergebnis mit der goto
-Anweisung erzielt werden kann, bewirkt die goto
-Anweisung, dass der Stapel abgewickelt wird. Da die __leave
-Anweisung kein Stapelabwickeln beinhaltet, ist sie effizienter.
Die Verwendung der longjmp
-Laufzeitfunktion zum Verlassen der try-exclusive-Anweisung wird als abnormale Beendigung betrachtet. Zur __try
-Anweisung zu springen ist illegal, aber aus ihr herauszuspringen ist legal. Wenn ein Prozess während der Ausführung einer try-exclusive-Anweisung abbricht, wird der Ausnahmehandler nicht aufgerufen.
Beispiel
Im Folgenden finden Sie Beispiele für Ausnahmehandler und Beendigungshandler. Weitere Informationen zu Beendigungshandlern finden Sie in der try-finally-Anweisung.
. . . puts("hello"); __try{ puts("in try"); __try{ puts("in try"); RAISE_AN_EXCEPTION(); }__finally{ puts("in finally"); } }__except( puts("in filter"), EXCEPTION_EXECUTE_HANDLER ){ puts("in except"); } puts("world");
Hier ist die Ausgabe des obigen Beispiels mit rechts hinzugefügten Kommentaren:
hello in try /* fall into try */ in try /* fall into nested try */ in filter /* execute filter; returns 1 so accept */ in finally /* unwind nested finally */ in except /* transfer control to selected handler */ world /* flow out of handler */
Ende Microsoft-spezifischer
Verwandte Artikel:
Helloworld-Erweiterung der C-Sprache PHP
C-Sprachstrukturfunktion: Der Unterschied zwischen PHP-Sprachstruktur und -funktion
Das obige ist der detaillierte Inhalt vonMicrosoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Die Nutzungsmethoden von Symbolen in der C-Sprachabdeckung Arithmetik, Zuordnung, Bedingungen, Logik, Bitoperatoren usw. werden für grundlegende mathematische Operationen verwendet, Zuordnungsoperatoren werden zur Zuordnung und Addition verwendet, Subtraktion, Multiplikationszuordnung und Abteilungszuweisung, Zustandsbetreiber werden für Unterschiede verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Zeiger, Markierungen am Ende der Datei und nicht numerische Werte.

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

In der C -Sprache werden Sonderzeichen durch Escape -Sequenzen verarbeitet, wie z. B.: \ n repräsentiert Linienbrüche. \ t bedeutet tab charakter. Verwenden Sie Escape -Sequenzen oder Zeichenkonstanten, um Sonderzeichen darzustellen, wie z. B. char c = '\ n'. Beachten Sie, dass der Backslash zweimal entkommen muss. Verschiedene Plattformen und Compiler haben möglicherweise unterschiedliche Fluchtsequenzen. Bitte wenden Sie sich an die Dokumentation.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

In der C -Sprache kann die char -Typ -Konvertierung direkt in einen anderen Typ konvertiert werden, wenn: Casting: Verwenden von Casting -Zeichen. Automatische Konvertierung des Typs: Wenn ein Datentyp einen anderen Werttyp berücksichtigen kann, wandelt der Compiler diese automatisch um.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

Das Char -Array speichert Zeichensequenzen in der C -Sprache und wird als char Array_name [Größe] deklariert. Das Zugriffselement wird durch den Einweisoperator weitergeleitet, und das Element endet mit dem Null -Terminator '\ 0', der den Endpunkt der Zeichenfolge darstellt. Die C -Sprache bietet eine Vielzahl von String -Manipulationsfunktionen wie Strlen (), Strcpy (), Strcat () und strcmp ().
