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.
Information:
catch(...)Seit Visual C++ 7.1 geänderte Semantik; strukturierte Ausnahmen (SEH) werden nicht mehr abgefangen.
Hinweise
C4571 wird für jeden catch(...) Block generiert, wenn Sie die /EHs Compileroption angeben.
Wenn Sie die /EHs Compileroption angeben, catch(...) erfassen Blöcke keine strukturierten Ausnahmen. (Dividieren durch Null- oder Nullzeiger-Ausnahmen, z. B. Ein catch(...) Block fängt nur explizit C++-Ausnahmen ab. Weitere Informationen finden Sie unter Ausnahmebehandlung (Task Parallel Library).
Diese Warnung ist standardmäßig deaktiviert. Aktivieren Sie diese Warnung, um sicherzustellen, dass beim Kompilieren mit /EHs Ihren catch (...) Blöcken keine strukturierten Ausnahmen erfasst werden. Weitere Informationen finden Sie unter Compilerwarnungen, die standardmäßig deaktiviert sind.
Sie können C4571 auf eine der folgenden Arten auflösen:
Kompilieren Sie,
/EHawenn Ihrecatch(...)Blöcke strukturierte Ausnahmen abfangen sollen.Aktivieren Sie C4571 nicht, wenn Sie nicht möchten, dass Ihre
catch(...)Blöcke strukturierte Ausnahmen abfangen, sie aber weiterhin Blöcke verwendencatch(...)möchten. Sie können strukturierte Ausnahmen weiterhin mithilfe der Schlüsselwörter für die strukturierte Ausnahmebehandlung (__try,__exceptund__finally) erfassen. Denken Sie jedoch daran, dass beim Kompilieren mithilfe von/EHsDestruktoren nur aufgerufen wird, wenn eine C++-Ausnahme ausgelöst wird, nicht wenn eine SEH-Ausnahme auftritt.Ersetzen Sie
catch(...)Blöcke durch Catch-Blöcke für bestimmte C++-Ausnahmen, und fügen Sie optional eine strukturierte Ausnahmebehandlung um die C++-Ausnahmebehandlung (__try,__exceptund__finally) hinzu. weitere Informationen finden Sie unter Structured Exception Handling (C/C++) und (Exception Handling Model).For more information, see Structured Exception Handling (C/C++) and/EH(Exception Handling Model).
Beispiel
Im folgenden Beispiel wird C4571 generiert.
// C4571.cpp
// compile with: /EHs /W4 /c
#pragma warning(default : 4571)
int main() {
try {
int i = 0, j = 1;
j /= i; // this will throw a SE (divide by zero)
}
catch(...) {} // C4571 warning
}