Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In systemeigenem Code können Sie systemeigene C++-Ausnahme von MSIL abfangen. Sie können CLR-Ausnahmen mit __try und __except.
Weitere Informationen finden Sie unter "Strukturierte Ausnahmebehandlung (C/C++) und moderne C++-Methoden für Ausnahmen und Fehlerbehandlung.For more information, see Structured Exception Handling (C/C++) and Modern C++ best practices for exceptions and error handling.
Beispiel 1
Im folgenden Beispiel wird ein Modul mit zwei Funktionen definiert, eines, das eine systemeigene Ausnahme auslöst, und eine andere, die eine MSIL-Ausnahme auslöst.
// catch_MSIL_in_native.cpp
// compile with: /clr /c
void Test() {
throw ("error");
}
void Test2() {
throw (gcnew System::Exception("error2"));
}
Beispiel 2
Im folgenden Beispiel wird ein Modul definiert, das eine systemeigene und MSIL-Ausnahme abfangen soll.
// catch_MSIL_in_native_2.cpp
// compile with: /clr catch_MSIL_in_native.obj
#include <iostream>
using namespace std;
void Test();
void Test2();
void Func() {
// catch any exception from MSIL
// should not catch Visual C++ exceptions like this
// runtime may not destroy the object thrown
__try {
Test2();
}
__except(1) {
cout << "caught an exception" << endl;
}
}
int main() {
// catch native C++ exception from MSIL
try {
Test();
}
catch(char * S) {
cout << S << endl;
}
Func();
}
error
caught an exception