Gestione delle eccezioni in MFC
Questo articolo illustra i meccanismi di gestione delle eccezioni disponibili in MFC.Due meccanismi disponibili:
Eccezioni C++, disponibili nelle versioni di MFC 3,0 e versioni successive
Le macro di eccezione MFC, disponibili in MFC versione 1,0 e successive
Se si scrive una nuova applicazione utilizzando MFC, è necessario utilizzare il meccanismo di C++.È possibile utilizzare il meccanismo basato su macro se utilizzata dall'applicazione esistente 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 di convertire il codice e per eseguire tale operazione sono descritti nell'articolo Eccezioni: Conversione da macro di eccezione MFC.
Se è già stato compilato di un'applicazione utilizzando le macro di eccezione MFC, è possibile continuare a utilizzare queste macro nel codice esistente, mentre utilizza le eccezioni C++ nel nuovo codice.L'articolo Eccezioni: Modifiche alle macro di eccezione nella versione 3,0 vengono fornite indicazioni per eseguire tale operazione.
[!NOTA]
Per attivare la gestione delle eccezioni C++ nel codice, selezionare consente alle eccezioni C++ nella pagina della generazione di codice nella cartella C/C++ la finestra di dialogo di Pagine delle proprietà (C++) del progetto, o utilizzare l'opzione del compilatore /GX.L'impostazione predefinita è /GX –, ovvero disabilitare la gestione delle eccezioni.
Questo articolo vengono trattati i seguenti argomenti:
Quando utilizzare le eccezioni
Supporto di eccezione 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 errata, o esecuzione anomala.Ogni categoria viene descritta di seguito.
Esecuzione normale
La funzione può eseguire normalmente e ritorno.Alcune funzioni restituiscono un codice di risultato al chiamante, che indica il risultato della funzione.I codici possibili di risultato sono strettamente definito per la funzione e rappresentano l'intervallo dei risultati possibili della funzione.Il codice risultante può indicare l'esito positivo o negativo o inoltre possibile indicare un particolare tipo di errore all'interno dell'intervallo normale delle aspettative.Ad esempio, una funzione di file-stato può restituire un codice che indica che il file non esiste.Tenere presente che il termine “codice di errore„ non viene utilizzato perché un codice di risultato rappresenta uno dei risultati previsti.
Esecuzione errata
Il chiamante è un errore per passare gli argomenti alla funzione o chiama la funzione in un contesto non appropriato.Questa situazione si verifica un errore e deve essere rilevata da un'asserzione durante il per lo sviluppo di programmi.(Per ulteriori informazioni sulle asserzioni, vedere Asserzioni).
Esecuzione anomala
L'esecuzione anomala include le situazioni in cui i termini all'esterno del controllo del programma, ad esempio la memoria insufficiente o errore di I/O, vengono influenzando il risultato della funzione.Le situazioni anomale devono essere gestite rilevazione e generazione di eccezioni.
Utilizzo delle eccezioni è particolarmente adatto per l'esecuzione anomala.
Supporto di eccezione MFC
Se si utilizzano direttamente le eccezioni C++ oppure le macro di eccezione MFC, si utilizzerà Classe CException o CExceptiondi oggetti derivati che possono essere generati dal framework o dall'applicazione.
Nella tabella seguente sono illustrate le eccezioni predefinite fornite da MFC.
Classe dell'eccezione |
Significato |
---|---|
Di memoria insufficiente |
|
Eccezione di file |
|
Eccezione serializzazione/archiviano |
|
Risposta da richiedere servizio non supportato |
|
Eccezione di allocazione di risorse di windows |
|
Eccezioni di database (classi DAO) |
|
Eccezioni di database (classi ODBC) |
|
Eccezioni OLE |
|
Eccezioni dispatch (l'automazione) |
|
Eccezione che avvisa l'utente a una finestra di messaggio, genererà Classe CExceptiongenerico |
[!NOTA]
Eccezioni di MFC supporta sia C++ che le macro di eccezione MFC.MFC non supporta direttamente i gestori di eccezioni strutturati Windows (SEH) NT, come illustrato in Gestione delle eccezioni strutturata.
Ulteriori informazioni sulle eccezioni
Gli articoli seguenti illustrano l'utilizzo della libreria MFC per passare di eccezione:
I seguenti articoli confrontano le macro di eccezione MFC con parole chiave delle eccezioni C++ e viene spiegato come è possibile adattare il codice:
Vedere anche
Riferimenti
Altre risorse
Ricerca per categorie: Creazione di mie proprie classi di eccezione personalizzate?