Inhaltsverzeichnis
Syntax
Heim Backend-Entwicklung C#.Net-Tutorial Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung

Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung

Aug 06, 2018 pm 02:28 PM

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:

  1. Führen Sie den geschützten Abschnitt aus.

  2. 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.

  3. 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:
  4. 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.
  5. 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.

Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung Beschreibung
Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung 说明

结构化异常处理适用于 C 和 C++ 源文件。 但是,这不是专门为 C++ 设计的。 您可通过使用 C++ 异常处理来确保提高代码的可移植性。 此外,C++ 异常处理机制灵活得多,因为它可以处理任何类型的异常。

Die strukturierte Ausnahmebehandlung funktioniert für C- und C++-Quelldateien. Dies ist jedoch nicht speziell für C++ konzipiert. Sie können sicherstellen, dass Ihr Code besser portierbar ist, indem Sie die C++-Ausnahmebehandlung verwenden. Darüber hinaus ist der Ausnahmebehandlungsmechanismus von C++ viel flexibler, da er jede Art von Ausnahme behandeln kann.
Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung 说明

对于 C++ 程序,应使用 C++ 异常处理,而不是结构化异常处理。 有关详细信息,请参阅《C++ 语言参考》中的异常处理。

Microsoft C++-Spracherweiterung: strukturierte Ausnahmen mit Try-Exception-Anweisung Beschreibung
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");
Nach dem Login kopieren

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                  */
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man verschiedene Symbole in der C -Sprache verwendet Wie man verschiedene Symbole in der C -Sprache verwendet Apr 03, 2025 pm 04:48 PM

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.

Was ist die Rolle von CHAR in C -Saiten? Was ist die Rolle von CHAR in C -Saiten? Apr 03, 2025 pm 03:15 PM

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.

Wie man mit Sonderfiguren in der C -Sprache umgeht Wie man mit Sonderfiguren in der C -Sprache umgeht Apr 03, 2025 pm 03:18 PM

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 asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

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.

Der Unterschied zwischen char und wchar_t in der C -Sprache Der Unterschied zwischen char und wchar_t in der C -Sprache Apr 03, 2025 pm 03:09 PM

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.

Wie man CHO in C -Sprache umwandelt Wie man CHO in C -Sprache umwandelt Apr 03, 2025 pm 03:21 PM

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.

Was ist die Funktion der C -Sprachsumme? Was ist die Funktion der C -Sprachsumme? Apr 03, 2025 pm 02:21 PM

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.

So verwenden Sie char Array in C -Sprache So verwenden Sie char Array in C -Sprache Apr 03, 2025 pm 03:24 PM

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 ().

See all articles