Condividi tramite


Gestione delle eccezioni in MFC

Questo articolo spiega i meccanismi di gestione delle eccezioni disponibili in MFC. Sono disponibili due meccanismi:

  • Le eccezioni C++, disponibili nelle versioni di MFC 3,0 e successive

  • Le macro di eccezione MFC, disponibili in MFC versione 1,0 e successive

Se si sta scrivendo una nuova applicazione che utilizza MFC, è necessario utilizzare il meccanismo di C++. È possibile utilizzare il meccanismo basato su macro se l'applicazione esistente utilizza già tale meccanismo in modo esteso.

È possibile convertire facilmente il codice esistente per utilizzare le eccezioni C++ anziché le macro di eccezione MFC. I vantaggi del convertire il codice e le linee guida per eseguire tale operazione sono descritti nell'articolo Eccezioni: conversione da macro eccezioni MFC.

Se è già stata sviluppata un'applicazione utilizzando le macro di eccezione MFC, è possibile continuare ad utilizzare queste macro nel codice esistente, mentre si utilizzano le eccezioni C++ nel nuovo codice. L'articolo Eccezioni: modifiche alle macro eccezioni nella versione 3.0 fornisce indicazioni per farlo.

Nota

Per attivare la gestione delle eccezioni C++ nel codice, selezionare Abilita Eccezioni C++ nella pagina Generazione Codice nella cartella C/C++ della finestra di dialogo Pagine delle proprietà (Visual C++) del progetto o utilizzare l'opzione del compilatore /GX.L'impostazione predefinita è /GX–, ovvero disabilita la gestione delle eccezioni.

Questo articolo tratta i seguenti argomenti:

  • Quando utilizzare le eccezioni

  • Supporto delle eccezioni MFC

  • Ulteriori informazioni sulle eccezioni

Quando Utilizzare le Eccezioni

Tre categorie di risultati possono verificarsi quando una funzione viene chiamata durante l'esecuzione del programma: esecuzione normale, esecuzione con errori o esecuzione anomala. Ogni categoria viene descritta di seguito.

  • Esecuzione normale

    La funzione può eseguire normalmente e ritornare. Alcune funzioni restituiscono un codice di risultato al chiamante, il che indica il risultato della funzione. I codici possibili risultati vengono definiti rigidamente per la funzione e rappresentano l'intervallo dei risultati possibili della funzione. Il codice risultante può indicare l'esito positivo o negativo o può anche indicare un particolare tipo di errore che è nell'intervallo normale delle aspettative. Ad esempio, una funzione di stato file può restituire un codice che indica che il file non esiste. Tenere presente che il termine "codice di errore" non è utilizzato perché un codice di risultato rappresenta uno dei risultati previsti.

  • Esecuzione erronea

    Il chiamante esegue qualche errore nel passare gli argomenti alla funzione o chiama la funzione in un contesto non appropriato. Questa situazione causa un errore e deve essere rilevata da un'asserzione durante lo sviluppo del programma. (Per ulteriori informazioni sulle asserzioni, vedere Asserzioni C/C++.)

  • Esecuzione anomala

    L'esecuzione anomala include situazioni dove le condizioni esterne al controllo del programma, ad esempio memoria insufficiente o errori di I/O, influenzano il risultato della funzione. Le situazioni anomale devono essere gestite rilevando e generando eccezioni.

L'utilizzo di eccezioni è particolarmente adatto per l'esecuzione anomala.

Supporto delle Eccezioni MFC

Se si utilizzano direttamente le eccezioni C++ oppure le macro di eccezione MFC, verranno utilizzati oggetti derivati da Classe CException o CException che possono essere generati dal framework o dall'applicazione.

La tabella seguente mostra le eccezioni predefinite fornite da MFC.

Classe dell'eccezione

Significato

Classe CMemoryException

Memoria insufficiente

Classe CFileException

Eccezione file

Classe CArchiveException

Eccezione Archiviazione/Serializzazione

Classe CNotSupportedException

Risposta a richiesta per servizio non supportato

Classe CResourceException

Eccezione di allocazione risorse Windows

Classe CDaoException

Eccezioni di database (classi DAO)

Classe CDBException

Eccezioni di database (classi ODBC)

Classe COleException

Eccezioni OLE

Classe COleDispatchException

Eccezioni dispatch (automazione)

Classe CUserException

L'eccezione che avvisa l'utente con una finestra di messaggio, quindi genera un Classe CException generico

Nota

MFC supporta sia le eccezioni C++ che le macro di eccezione MFC.MFC non supporta direttamente i gestori eccezioni strutturati di Windows NT (SEH), come illustrato in Gestione eccezioni strutturate.

Ulteriori Informazioni Sulle Eccezioni

Gli articoli seguenti illustrano l'utilizzo della libreria MFC per la gestione delle eccezione:

Gli articoli seguenti confrontano le macro di eccezione MFC con le parole chiave delle eccezioni C++ e spiegano come è possibile adattare il codice:

Vedere anche

Riferimenti

Gestione delle eccezioni C++

Altre risorse

Come Faccio a: Creare le proprie classi di eccezione personalizzate?