Gestione delle eccezioni in Visual C++
Un'eccezione è una condizione di errore, probabilmente all'esterno del controllo del programma, che impedisce il programma di proseguire lungo il percorso di esecuzione normale.Determinate operazioni, inclusa la creazione di un oggetto, archiviano le attività e le chiamate di funzione apportate da altri moduli, tutte da origini potenziali delle eccezioni anche quando il programma viene eseguito correttamente.il codice affidabile prevede e gestisce le eccezioni.
Per rilevare errori logici in un unico programma o modulo, asserzioni di utilizzare invece delle eccezioni (vedere Utilizzo di asserzioni).
Visual C++ supporta tre tipi di gestione delle eccezioni:
-
Per la maggior parte dei programmi C++, è necessario utilizzare la gestione delle eccezioni C++, che è indipendente dai tipi e assicura che i distruttori dell'oggetto siano richiamati durante la rimozione dello stack.
Gestione delle eccezioni strutturata
Windows fornisce il proprio meccanismo di eccezione, denominato SEH.Non è consigliabile programmazione MFC o C++.Utilizzare SEH solo nei programmi C di non MFC.
-
Dalla versione 3,0, MFC utilizza le eccezioni C++ ma ancora supporta le macro precedenti di gestione delle eccezioni, simili alle eccezioni C++ nel form.Sebbene queste macro non è consiglino per la programmazione, sono tuttavia supportate per compatibilità con le versioni precedenti.Nei programmi già utilizzano le macro, è possibile utilizzare liberamente le eccezioni C++ anche.Durante la pre-elaborazione, le macro valutare le parole chiave e di gestione delle eccezioni definite nell'implementazione di Visual C++ del linguaggio C++ a partire da Visual C++ versione 2,0.È possibile lasciare le macro esistenti di eccezione sul posto quando si inizia a utilizzare le eccezioni C++.
utilizzare /EH opzione del compilatore per specificare il tipo di gestione delle eccezioni in modo da utilizzare in un progetto, La gestione delle eccezioni C++ è l'impostazione predefinita.Non combinare i meccanismi di gestione degli errori; ad esempio, non utilizzare le eccezioni C++ con un'istruzione SEH.Per consigli su combinare le macro MFC e le eccezioni C++, vedere eccezioni: Utilizzando le macro MFC e delle eccezioni C++.
Per informazioni sulla gestione delle eccezioni nelle applicazioni CLR, vedere Gestione delle eccezioni in /clr.
Per informazioni sulla gestione delle eccezioni nei processori x64, vedere Gestione delle eccezioni (x64).