2016-03-23 4 views
0

In Exception behandeln Maximum, wie oft wir verschachtelte try-catch in C# Antwort nicht finden?In Exception behandeln, wie oft wir verschachtelte try-catch in C#

+1

Ist das eine akademische Frage? Nur neugierig, was für Sie diese Informationen brauchen. Ich denke, der Compiler wird sich nicht über 10 verschachtelte 'try/catch' Blöcke beschweren, aber sicherlich wird jeder den Code lesen. –

+0

http://stackoverflow.com/questions/13239972/how-do-you-implement-a-re-try-catch möglicherweise Sie sind auf der Suche nach diesem –

+0

Dies ist keine akademische Frage? aber das sollten wir wissen. Jemand hat mir diese Frage gestellt. –

Antwort

1

In meinem Verständnis (keine Beweise, nur Gedanken) ist es nicht darauf beschränkt. Ich habe nicht gesagt unbegrenzt, aber was gibt es keine MaxNesting Eigenschaft oder Konstante irgendwo.

try/catch/finally ist eine C# Konstruktion in IL zusammengestellt. Die Frage ist im Grunde gleich

wie tief [insert Schlüsselwort] sein kann nisten

ZB: switch, if, foreach usw.

Haben Sie schon einmal über maximale Verschachtelung von denen gehört, ? Ich denke nicht.

Es kann nur eine try/catch in der rekursiven Methode geben, die sich selbst in try aufruft. Hat try irgendwelche Einschränkungen für sich? Ja, da diese offensichtlich mehr Speicher benötigen, um die Adresse catch irgendwo zu halten. Kannst du die Nummer sagen? Nein, es hängt vom verfügbaren Speicher ab.

+0

Kann aber ich bin für perfekte Antwort .. –

+0

Lassen Sie uns warten auf eine;) – Sinatr

1

Es kann keine Grenze geben, wenn Sie die sorgfältig lesen, die besagt, dass ein try Block geschützten Code umgibt, der möglicherweise eine Ausnahme auslöst. Gleiches gilt für den Block catch, der den Code umgibt, der ausgeführt wird, wenn eine Ausnahme auftritt, und der finally-Block.

Als try-catch-finally Block selbst per Definition ist ein Codeblock, diese Definition ist rekursiv, so dass jeder try Block kann einen try-catch-finally Block umgibt, jeder catch und finally blockieren kann, zu.

Die einzigen Grenzen sind Lesbarkeit und Gedächtnis.

aber wir sollten das wissen.

Warum? Welchen Vorteil haben Sie von diesen Informationen oder erwarten Sie? Ich bin sehr viel mit dem was @HansPassant in den Kommentaren gesagt hat ...

Übrigens: Nichts hält dich davon ab, eine kleine Testanwendung zu schreiben, die eine C# -Datei mit einer gegebenen maximalen Anzahl von Verschachtelungsebenen erzeugt, die du dann versuche zu kompilieren. Wenn Sie ein Maximum finden, schauen Sie sich die Quelldatei an und fragen Sie sich, ob diese noch lesbar ist.

+0

Können Sie mir helfen, wie Sie oben Situation in Exception Handling behandeln. Kann die Art sein, die ich gewählt habe, ist falsch .. –

+0

Nun, der Code, den Sie in den Kommentaren zur Verfügung gestellt, sagt nicht viel über das, was Sie eigentlich * tun *. Es zeigt nur, dass Sie andere 'try-catch' Blöcke im' catch' Block haben. Vielleicht, wenn Sie Ihre Frage erweitern, um ein Beispiel zu zeigen, was Sie tun, erhalten Sie Vorschläge, wie Sie es verbessern können. –

+0

@RohitMane Wurde dies in einem Interview gefragt? Ich hatte dumme Interviewer, die mich das fragen und mich sofort verärgern. Wenn es nicht eine Grenze von 5-6 Catch-Blöcken gab, wird es im wirklichen Leben nie ins Bild kommen. Aber immer noch stellen dumme Interviewer solche Fragen sehr oft. – jitendragarg

Verwandte Themen