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 |
---|---|
Memoria insufficiente |
|
Eccezione file |
|
Eccezione Archiviazione/Serializzazione |
|
Risposta a richiesta per servizio non supportato |
|
Eccezione di allocazione risorse Windows |
|
Eccezioni di database (classi DAO) |
|
Eccezioni di database (classi ODBC) |
|
Eccezioni OLE |
|
Eccezioni dispatch (automazione) |
|
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
Altre risorse
Come Faccio a: Creare le proprie classi di eccezione personalizzate?