Gestire quasi tutte le eccezioni in C ++
-
21-12-2019 - |
Domanda
Ho un blocco tentativo che attualmente cattura tutte le eccezioni:
try
{
// do some work
}
catch (std::exception &ex)
{
// log ex
}
.
Tuttavia, non voglio catturare le violazioni di accesso.Posso specificarlo come eccezione (per così dire) del mio gestore?O dovrei prenderlo prima e ritorni?
Soluzione
Sei già non catch
ing Access Violations e non puoi mai.Le violazioni di accesso non sono eccezioni C ++.Sono "eccezioni" di un diverso tipo - che sollevate dal tuo sistema operativo.Preferisco non chiamarli "eccezioni", infatti.
I sistemi operativi Linux e Linux terminano semplicemente un processo (utilizzando un segnale ) che esegue una violazione di accesso.
Windows utilizza invece qualcosa chiamato "eccezioni strutturate" che puoi potenzialmente catturare e possibilmente ignorare l'uso di estensioni linguistiche in Visual Studio.Stiamo avventurando off-topic ora, ma è possibile Leggi su quelle .Non raccomanderei ancora il loro uso, ti importa.Una volta che hai una violazione di accesso, sarei personalmente contento di dire "Tutte le scommesse sono off", e "abbiamo alcuni debug da fare".