「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 例外処理では、「スロー」と「新しい例外()」の違いは何ですか? `?

例外処理では、「スロー」と「新しい例外()」の違いは何ですか? `?

2025-04-13に投稿されました
ブラウズ:159

What's the Difference Between `throw` and `throw new Exception()` in Exception Handling?

throw throw new Exception() ]の違いを深く理解しています。 例外処理では、

throw

および throw new Exception()の使用効果に大きな違いがあります。それぞれの行動に飛び込みましょう:

スロー:元の例外情報 ]を保持する

スロー

ステートメントは、現在アクティブな例外を再ロールします。 Catch ブロックで使用すると、元の例外のタイプ、メッセージ、スタックトレースが保持されます。これにより、例外を変更せずに伝播し続けることができます。

試す { ... } catch {throw}
try { ... }
catch { throw }
をtry

ブロックで例外が発生した場合、 catch ブロックは同じ例外を再スローし、元の情報はそのままです。

Throw new Exception():スタックトレースをリセット ] 一方、

スロー新しい例外(メッセージ)

は新しい例外インスタンスを作成し、指定されたメッセージを使用します。このアクションは、スタックトレースをリセットし、 catch blockの前に発生したすべてのトレース情報を削除します。

試す{ ... } catch(例外e){新しい例外をスロー(e.message)}
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
をtry

blockで例外が発生した場合、 catch ブロックは元の例外のメッセージで新しい例外を作成しますが、スタックトレースは catch ブロック自体から始まります。

ex を使用することを避ける

を使用しないことを強くお勧めします。そうすることで、元の例外が伝播されますが、スタックトレースはリセットされます。これにより、例外のソースをデバッグすることが非常に困難になります。

CREATEカスタム例外 ]

場合によっては、追加情報を提供するためにすべての例外をカスタム例外オブジェクトに包む必要がある場合があります。これを行うには、4つの例外コンストラクターすべてを含む

例外から継承された新しい例外クラスを定義します。オプションで、元の例外と追加情報を受け入れる追加のコンストラクターを追加できます。カスタム例外をスローするときは、元の例外を内部例外パラメーターとして渡して、スタックトレースやその他のプロパティを保持してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3