Die Ausführung wird nicht den zweiten catch-Block eingeben, wird try-catch
offensichtlich, dass die Art und Weise nicht funktioniert, wird die Ausnahme ausgelöst Nach oben auf den Aufrufstack werden alle folgenden catch
-Klauseln ignoriert.
Es ist einfach sieht auf diese Weise, weil Sie das Debuggen in Veröffentlichung Modus, der wahrscheinlich keine gute Idee, da die IDE ist wichtig, Debug-Informationen fehlen und daher fälschlicherweise wird stoppt, dass die Ausführung zeigt, wenn die zweite catch
Klausel eingeben.
Beachten Sie, dass das Anhalten an diesem Punkt wirklich keinen Sinn macht, wenn die Ausführung es irgendwie in die zweite catch
Klausel brachte, würde es bei der throw
Anweisung anhalten, nicht vorher.
Um es kurz zu machen, was wirklich los ist ist, dass die Ausführung auf der ersten throw
Halt macht und die IDE es nicht richtig zeigt.
Moral der Geschichte; debuggen Sie nicht in Release Modus. Wenn Sie VS2015 laufen lassen, warnt es Sie tatsächlich, dass Debugging-Erfahrung in Release Modus subpar wird (nicht sicher, ob diese Warnung in früheren Versionen angezeigt wurde).
UPDATE: Es scheint, das Problem nicht zu Debuggen in Veröffentlichung Modus verwendet ist, wie es in Debug Modus immer noch geschieht. Dennoch, der Punkt steht, dass das Debuggen nicht in Release Mode als funky Zeug wie dies geschehen kann. Ich würde versuchen, die Lösung zu säubern und zu sehen, ob das das Problem löst. Wenn nicht, würde ich es nicht schwitzen, der Code verhält sich richtig, es ist nur eine Frage der IDE, die nicht korrekt anzeigt, wo die Ausführung stockt, keine große Sache.
Aus Neugier, warum Debuggen Sie im Freigabemodus? – user1666620
@CharlesMager Ich hatte den Eindruck, dass, wenn Sie eine Ausnahme wiederholen, sie auf einer höheren Ebene gefangen wird, nicht durch den nächsten Catch-Block des gleichen Versuchs. – user1666620
@ user1666620 Du hast natürlich Recht - Entschuldigung, ich hatte nicht entdeckt wo dein Breakpoint war! –