482 Stimmen

Warum sollte ich nicht jeden Block in "try"-"catch" einpacken?

Ich war schon immer der Überzeugung, dass es fahrlässig ist, einen Aufruf, der eine Ausnahme werfen kann, nicht mit einem sinnvollen try-Block zu schützen.

Ich habe gerade "Sie sollten IMMER Aufrufe, die eine Ausnahme werfen können, in try-catch-Blöcke einpacken." zu dieser Frage gepostet und mir wurde gesagt, dass es sich um 'bemerkenswert schlechten Rat' handelt - Ich würde gerne verstehen, warum.

-4voto

Amit Kumawat Punkte 582

Sie brauchen nicht jede einzelne Zeile Ihres Codes innerhalb von try-catch abzudecken. Der Hauptzweck des try-catch-Blocks besteht darin, Fehler zu behandeln und Bugs/Ausnahmen in Ihrem Programm zu ermöglichen. Einige Verwendungsmöglichkeiten von try-catch sind -

  1. Sie können diesen Block dort verwenden, wo Sie eine Ausnahme behandeln möchten oder einfach sagen können, dass der geschriebene Codeblock eine Ausnahme auslösen kann.
  2. Wenn Sie Ihre Objekte sofort nach ihrem Gebrauch entsorgen möchten, können Sie einen try-catch-Block verwenden.

2 Stimmen

"Wenn Sie Ihre Objekte sofort nach ihrem Gebrauch entsorgen möchten, können Sie einen try-catch-Block verwenden." Haben Sie beabsichtigt, dies zur Förderung von RAII/minimaler Objektlebensdauer zu tun? Wenn ja, nun, try/catch ist völlig separat/orthogonal dazu. Wenn Sie Objekte in einem kleineren Bereich entsorgen möchten, können Sie einfach einen neuen { Block likeThis; /* <- dieses Objekt wird hier zerstört -> */ } öffnen - Sie müssen dies nicht in try/catch einschließen, es sei denn, Sie müssen tatsächlich etwas catch, natürlich.

1 Stimmen

2 - Das Entsorgen von Objekten (die manuell erstellt wurden) in der Ausnahme scheint mir seltsam, dies kann in einigen Sprachen zweifellos nützlich sein, aber im Allgemeinen macht man dies in einem try/finally "innerhalb des try/except-Blocks" und nicht speziell im except-Block selbst - da das Objekt selbst möglicherweise die Ursache der Ausnahme war und somit eine weitere Ausnahme und potenziell einen Absturz verursachen könnte.

0 Stimmen

Ich denke, das könnte etwas aufgeräumt werden. Zum Beispiel wird "Die Hauptverwendung von...die Fehlerbehandlung und das Abfangen von Ausnahmen in Ihrem Programm."

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X