sto leggendo il "C++ Programming Language 4a edizione" libro e hanno una domanda per quanto riguarda un paragrafo sulla gestione delle eccezioni:un'eccezione durante la manipolazione un'eccezione
Ci sono casi in cui la gestione delle eccezioni deve essere abbandonato per meno tecniche di gestione degli errori sottili. I principi guida sono:
- Non generare un'eccezione durante la gestione di un'eccezione.
- Non lanciare un'eccezione che non può essere catturata.
Se l'implementazione della gestione delle eccezioni ti cattura, lo termina il programma.
Qualcuno potrebbe darmi un esempio del primo situtation? Solo una cosa del genere mi viene in mente ma è un codice valido secondo g ++:
try
{
throw 1;
}
catch(...)
{
try
{
throw 2;
}
catch(...)
{
cout << "OK";
}
}
Non date per scontato qualcosa è valido e/o fa quello che si pensa solo perché è compilato! 'C++' ha il concetto di [* comportamento indefinito *] (http://blog.regehr.org/archives/213), che si traduce approssimativamente come "se fai qualcosa di non valido, tutte le scommesse sono disattivate". Potrebbe andare in crash, potrebbe funzionare, potrebbe sembrare funzionare ma inviare tutti i numeri di carta di credito ai principi nigeriani. Nota che non sto dicendo che questo caso particolare sia (penso che non sia UB, solo pericolosamente vicino), ma non pensate che "sia compilato, va bene". – BoBTFish
Non posso essere d'accordo con il primo di questi, ma posso essere d'accordo con il secondo. Ci sono * molte * volte che i catch-block possono generare eccezioni, inclusa la stessa eccezione (tramite 'throw;'). – WhozCraig