Wir denken, dass eine Ausnahme bei der Initialisierung passieren kann. Also schreiben wir try/catch block.Wie funktioniert der try/catch in der Initialisierungsliste?
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
Aber der Fang retrowers Ausnahme auf einer Ebene tiefer. Das ist, bedeutet, dass im nächsten Code
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
AUSGABE:
Exception 1
Exception 2
Warum diese try/catch-Block nicht auf die gleiche Weise verhält sich wie gewöhnliche try/catch-Block?
Vollcodebeispiel: http://ideone.com/XjY2d
Als Anmerkung: Es wird nur automatisch neu gestartet, wenn Sie sich nicht werfen, um den 'catch' Block zu verlassen. –