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?

È stato utile?

Soluzione

Sei già non catching 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".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top