throw
と throw new Exception()
]の違いを深く理解しています。
例外処理では、
および throw new Exception()
の使用効果に大きな違いがあります。それぞれの行動に飛び込みましょう:
スロー:元の例外情報
]を保持する
ステートメントは、現在アクティブな例外を再ロールします。 Catch
ブロックで使用すると、元の例外のタイプ、メッセージ、スタックトレースが保持されます。これにより、例外を変更せずに伝播し続けることができます。
try { ... }
catch { throw }
をtry ブロックで例外が発生した場合、 catch
ブロックは同じ例外を再スローし、元の情報はそのままです。
Throw new Exception():スタックトレースをリセット
]
一方、
は新しい例外インスタンスを作成し、指定されたメッセージを使用します。このアクションは、スタックトレースをリセットし、 catch
blockの前に発生したすべてのトレース情報を削除します。
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
をtry blockで例外が発生した場合、 catch
ブロックは元の例外のメッセージで新しい例外を作成しますが、スタックトレースは catch
ブロック自体から始まります。
ex
を使用することを避ける
CREATEカスタム例外
]
例外から継承された新しい例外クラスを定義します。オプションで、元の例外と追加情報を受け入れる追加のコンストラクターを追加できます。カスタム例外をスローするときは、元の例外を内部例外パラメーターとして渡して、スタックトレースやその他のプロパティを保持してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3