[解決済み] throw' と 'throw new Exception()' の違い
2022-04-16 14:43:23
質問
とはどのような違いがあるのでしょうか?
try { ... }
catch{ throw }
そして
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
2番目はメッセージを表示しているにもかかわらず。
解決方法は?
throw;
元の例外を再スローし、元のスタックトレースを保持します。
throw ex;
は元の例外を投げますが、スタックトレースはリセットされ、その例外が発生するまですべてのスタックトレース情報は破棄されます。
catch
ブロックを作成します。
NEVER
書く
throw ex;
throw new Exception(ex.Message);
はさらに悪い。 これは全く新しい
Exception
のインスタンスを作成し、例外の元のスタックトレースとその型を失います。 (例
IOException
).
さらに、一部の例外は追加情報を保持する(例.
ArgumentException.ParamName
).
throw new Exception(ex.Message);
は、この情報も破棄します。
場合によっては、すべての例外をカスタム例外オブジェクトでラップし、例外がスローされたときにコードが何をしていたかについての追加情報を提供できるようにしたいこともあります。
これを実現するために、以下のような新しいクラスを定義します。
Exception
,
4 つの例外コンストラクタをすべて追加します。
また、オプションとして
InnerException
と追加情報、そして新しい例外クラスを投げます。
を渡す
ex
を
InnerException
パラメータ
. を渡すことで、オリジナルの
InnerException
スタックトレースを含む、元の例外のすべてのプロパティを保持します。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] AddTransient、AddScoped、AddSingleton サービスの相違点
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] 2つの日付の差(日数)を計算する?
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み】C#で例外をキャッチして再スローする理由とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] 投げる」と「投げる元」は違うのですか?
-
[解決済み】.NETの例外をキャッチして再スローするためのベストプラクティス