Condividi tramite


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

Classe CMemoryException

Di memoria insufficiente

Classe CFileException

Eccezione di file

Classe CArchiveException

Eccezione serializzazione/archiviano

Classe CNotSupportedException

Risposta da richiedere servizio non supportato

Classe CResourceException

Eccezione di allocazione di risorse di windows

Classe CDaoException

Eccezioni di database (classi DAO)

Classe CDBException

Eccezioni di database (classi ODBC)

Classe COleException

Eccezioni OLE

Classe COleDispatchException

Eccezioni dispatch (l'automazione)

Classe CUserException

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

Gestione delle eccezioni C++

Altre risorse

Ricerca per categorie: Creazione di mie proprie classi di eccezione personalizzate?