Le persone hanno già spiegato cosa significa, ma è potenzialmente utile sapere perché è possibile vederlo. È un modo utile per costruire un gestore di eccezioni 'generico' che si occupa di eccezioni basate sul loro tipo in modo da ridurre la quantità di codice duplicato.
Quindi, se prendiamo Neil's example ed espandere su ciò che potrebbe fare f()
potremmo finire con un'implementazione che fa qualcosa come il mio LogKnownException()
funzione che ho proposto in this answer.
Se lavori in una squadra a cui piace registrare tutti i tipi di eccezioni dappertutto, invece di avere un'enorme collezione di blocchi catch in tutti questi punti (o anche peggio una macro) puoi avere un semplice blocco catch che assomiglia a questo
catch(...)
{
LogKnownException();
}
Anche se mi aspetto che vorrei cambiare il mio precedente esempio di LogKnownException()
a uno che semplicemente ha permesso eccezioni che non voleva il login per propagare fuori e continuare in modo non gestita.
Non sto suggerendo che questa sia necessariamente una buona cosa da fare, solo sottolineando che questo è dove è probabile che tu veda il costrutto usato.
fonte
2010-04-22 17:09:26
Questa domanda non è correlata a Visual Studio o alcun tipo di C++ "visivo". Per favore, non etichettare le domande generiche sul C++ con i tag del framework concreto. –
@Pavel Shved: la domanda potrebbe essere correlata a VC++ se fosse applicabile un tipo di estensione del linguaggio.In tal caso, sarebbe auspicabile rispondere su tale base, pur sottolineando la risposta secondo lo Standard. –
@David, @Tobias, penso che sia meglio non taggare la domanda come correlata al VC se non si è sicuri. La comunità la cambierà in modo appropriato se si tratta di un'estensione di lingua. –