Die Leute haben bereits erklärt, was es bedeutet, aber es ist möglicherweise nützlich zu wissen, warum Sie es vielleicht sehen. Es ist ein nützlicher Weg, um einen 'generischen' Exception-Handler zu konstruieren, der Ausnahmen basierend auf ihrem Typ behandelt, um die Menge an doppeltem Code zu reduzieren.
Also, wenn wir Neil's example und erweitern, was f()
könnten wir mit einer Implementierung, die etwas tut, am Ende tun könnte wie meine LogKnownException()
Funktion, die ich in this answer vorgeschlagen.
Wenn Sie in einem Team arbeiten, das alle Arten von Ausnahmen überall protokolliert, anstatt eine riesige Sammlung von Catch-Blöcken an allen diesen Stellen zu haben (oder noch schlimmer, ein Makro), können Sie ein einfaches haben catch-Block, die Obwohl ich wie dieser erwarte
catch(...)
{
LogKnownException();
}
sieht würde ich mein vorheriges Beispiel LogKnownException()
zu einem ändern, die nur Ausnahmen erlaubt, dass es nicht in einer nicht behandelt Art und Weise zu verbreiten und weiter auf loggt sein wollte.
Ich schlage nicht vor, dass dies unbedingt eine gute Sache zu tun ist, nur darauf hinweist, dass hier wahrscheinlich das Konstrukt verwendet wird.
Diese Frage bezieht sich nicht auf Visual Studio oder irgendeine Art von "visuellem" C++. Bitte kennzeichnen Sie generische C++ - Fragen nicht mit konkreten Framework-Tags. –
@Pavel Shved: Die Frage könnte mit VC++ zusammenhängen, wenn eine Art von Spracherweiterung anwendbar ist.In diesem Fall wäre es wünschenswert, sie auf dieser Grundlage zu beantworten und gleichzeitig auf die Antwort gemäß dem Standard hinzuweisen. –
@David, @Tobias, ich denke, es ist besser, die Frage nicht als VC-bezogen zu kennzeichnen, wenn Sie nicht sicher sind. Die Community wird sie entsprechend neu schreiben, wenn es sich um eine Spracherweiterung handelt. –