Condividi tramite


Gestione delle eccezioni strutturata (C++)

Il supporto per Windows 95, Windows 98 e Windows 2000 (in precedenza Windows NT un modo affidabile per gestire le eccezioni, chiamare gestione delle eccezioni strutturata, che include la cooperazione del sistema operativo ma dispone anche di supporto diretto nel linguaggio di programmazione.

Grammatica

prova-eccetto-rendiconto :

__try* composto-rendiconto*

__except*( espressione ) composto-rendiconto*

Note

Un'eccezione è un evento che è imprevisto o interrompe la capacità del processo di proseguire normalmente.Le eccezioni possono essere rilevate dall'hardware che dal software.Le eccezioni hardware includono la divisione per zero e l'overflow di un tipo numerico.Le eccezioni del software includono quelle che devono essere rilevate e segnalano al sistema chiamando RaiseException situazioni speciale funzione e rilevate da windows.

È possibile scrivere codice più affidabile con la gestione delle eccezioni strutturata.È possibile assicurarsi che le risorse, come i blocchi di memoria e file, correttamente sono chiuse in caso di chiusura imprevista.È inoltre possibile gestire i problemi specifici, come memoria insufficiente, con il codice strutturato genere non si basi su goto istruzioni o test elaborazione dei codici restituiti.

try-except e try-finally le istruzioni vengono un'estensione Microsoft per il linguaggio C che consente alle applicazioni ottenere il controllo di un programma dopo aver eventi che in genere terminerebbero l'esecuzione.

[!NOTA]

Attività di gestione delle eccezioni strutturata con i file di origine c e C++.Tuttavia, in particolare non è progettata per C++.Sebbene i distruttori per gli oggetti locali vengano chiamati se si utilizza la gestione delle eccezioni strutturata in un programma C++ (se si utilizzano /EHsc), è possibile assicurarsi che il codice è più portabile tramite la gestione delle eccezioni C++.Gestione delle eccezioni C++ il meccanismo risulta più flessibile, in quanto può gestire le eccezioni di qualsiasi tipo.

Esistono due meccanismi di gestione delle eccezioni strutturata:

Questi due tipi di gestori vengono distinti, ma sono strettamente correlati a un processo denominato “rimozione dello stack.„ Quando si verifica un'eccezione, le finestre trova il gestore di eccezioni recente installata attualmente attivo.Il gestore può effettuare una di tre operazioni:

  • Passare il controllo ad altri gestori (mancanza di riconoscere l'eccezione).

  • riconoscere ma chiudere l'eccezione.

  • riconoscere e gestire l'eccezione.

Il gestore di eccezioni che riconosce l'eccezione non può essere della funzione che stava eseguendo quando si è verificata l'eccezione.In alcuni casi può trovarsi in una funzione molto più elevata nello stack.La funzione attualmente in esecuzione che tutte le funzioni dello stack frame, vengono terminate.Durante questo processo, lo stack viene rimosso„: variabili locali delle funzioni terminate, a meno che non siano statico, vengono eliminati dallo stack.

Come eliminare lo stack, il sistema operativo chiama tutti i gestori di terminazione scritto per ciascuna funzione.L'utilizzo di un gestore di terminazione fornisce una probabilità liberare le risorse che rimarrebbero in caso contrario vulnerabili a causa della terminazione anomala.Se è stata immessa una sezione critica, è possibile uscire nel gestore di terminazione.Se il programma sarà interrotta, è possibile eseguire altre attività del governo di cane quale la chiusura e rimuovere i file temporanei.

Se si dispone di moduli c che utilizzano la gestione delle eccezioni strutturata, possono essere combinate con i form C++ che utilizzano la gestione delle eccezioni C++.vedere Differenze di gestione delle eccezioni.

Per ulteriori informazioni, vedere:

Vedere anche

Riferimenti

Gestione delle eccezioni in Visual C++

Parole chiave C++