Procédure : Intercepter des exceptions en code natif levées à partir de MSIL
Dans le code natif, vous pouvez intercepter l’exception C++ native de MSIL. Vous pouvez intercepter des exceptions CLR avec __try
et __except
.
Pour plus d’informations, consultez les meilleures pratiques de gestion des exceptions structurées (C/C++) et C++ modernes pour la gestion des exceptions et des erreurs.
Exemple 1
L’exemple suivant définit un module avec deux fonctions, une qui lève une exception native et une autre qui lève une exception MSIL.
// catch_MSIL_in_native.cpp
// compile with: /clr /c
void Test() {
throw ("error");
}
void Test2() {
throw (gcnew System::Exception("error2"));
}
Exemple 2
L’exemple suivant définit un module qui intercepte une exception MSIL et native.
// 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
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour