Gestione delle eccezioni in MSVC

Un'eccezione è una condizione di errore, probabilmente non controllata dal programma, che impedisce al programma di proseguire il proprio percorso di esecuzione normale. Alcune operazioni, tra cui la creazione di oggetti, l'input/output dei file e le chiamate di funzione effettuate da altri moduli, sono tutte potenziali origini di eccezioni, anche quando il programma è in esecuzione correttamente. Quando è affidabile, il codice prevede e gestisce le eccezioni. Per rilevare gli errori logici, usare asserzioni anziché eccezioni (vedere Uso di asserzioni).

Tipi di eccezioni

Il compilatore Microsoft C++ (MSVC) supporta tre tipi di gestione delle eccezioni:

  • Gestione delle eccezioni C++

    Per la maggior parte dei programmi C++, è consigliabile usare la gestione delle eccezioni C++. È indipendente dai tipi e garantisce che i distruttori di oggetti vengano richiamati durante la rimozione dello stack.

  • Gestione strutturata delle eccezioni

    Windows fornisce il proprio meccanismo di eccezione, denominato gestione delle eccezioni strutturate (edizione Standard H). Non è consigliabile per la programmazione C++ o MFC. Usare edizione Standard H solo nei programmi C non MFC.

  • Eccezioni MFC

    Dalla versione 3.0, MFC usa eccezioni C++. Supporta ancora le macro di gestione delle eccezioni meno recenti, simili alle eccezioni C++. Per consigli sulla combinazione di macro MFC ed eccezioni C++, vedere Eccezioni: Uso di macro MFC ed eccezioni C++.

Usare un'opzione del compilatore /EH per specificare il modello di gestione delle eccezioni da usare in un progetto C++. La gestione delle eccezioni C++ standard (/EHsc) è l'impostazione predefinita nei nuovi progetti C++ in Visual Studio.

Non è consigliabile combinare i meccanismi di gestione delle eccezioni. Ad esempio, non usare eccezioni C++ con la gestione strutturata delle eccezioni. L'uso della gestione delle eccezioni C++ rende il codice più portabile e consente di gestire le eccezioni di qualsiasi tipo. Per altre informazioni sugli svantaggi della gestione strutturata delle eccezioni, vedere Gestione strutturata delle eccezioni.

Contenuto della sezione

Vedi anche

Informazioni di riferimento
sul linguaggio X64 per la gestione
delle eccezioni (C++/CLI e C++/CX)