序文:私にElmahを参照しないでください。 MVCの例外処理システムを自分自身で理解しようとしています。タイプSystem.Exceptionの例外が処理されません
私は自分の豊かさのためにMVCの例外システムで遊んでいます。私は奇妙な例外に遭遇しました。
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.ExceptionHandled == true)
{
return;
}
// log error
ErrorLog(filterContext);
// mark error as handled to prevent rethrow
filterContext.ExceptionHandled = true;
//show custom error page
ViewBag.Code = filterContext.Exception is HttpException ? ((HttpException) filterContext.Exception).GetHttpCode() : 500;
ViewBag.Exception = filterContext.Exception;
filterContext.Result = View("Error");
}
私はおもちゃのコントローラに簡単な十分な呼び出しを介して、それを投げる:次のように私は、onExceptionをする方法を書いた
:私は次の例外が例外をテストしましたif(something strange and bad happens)
{
throw new Exception("When in trouble or in doubt, run in circles, scream and shout.");
}
System.Exception型の例外が発生し、ユーザーコードで処理されませんでした。
コンストラクタに送信した文字列は、エラーメッセージの一部として例外システムに入ります。エラーで実行を続行すると、そのメッセージのエラーページが表示されますが、コードを実行しようとすると以前のエラーが発生します。内部の例外の詳細はnullで、残りの例外の詳細はあまりにも疎であるため、何が間違っているのかを理解するために使用することはできません。
私はこの例外が発生していると思われます。なぜなら、元の例外を処理する基本クラスを終了させないからです。しかし、私は完全になぜそうは思っていません。私は例外処理に関するさまざまな記事を読んできましたが、私は基本クラスに例外の処理を完了させる必要があるかどうか、または私が処理したかどうかを私に説明した(私が知っている) doneは十分です。私はカスタム処理を見てきました。
私の疑惑が間違っていて、まったく別のものがあれば、それは誰か分かりますか?これがスローされる状況は非常に簡単で、他に何かがこの問題に影響する可能性は低いです。
なぜこのエラーが発生する可能性があるのですか?
「エラーが発生してもエラーメッセージが表示されますが、コードを実行しようとすると以前のエラーが発生します。 ?デバッグしているときには動作しますが、コードを実行すると動作しません。 – Vache
私がデバッグしているとき、Visual Studioはエラーをポップして実行を停止し、例外が処理されていないことを通知します。エラーの詳細を見ると、そこには何もありません。実行を続けると、プロセスはエラーページに進みます。 ...多分私はそれを質問に加えるべきです。それがどうやって不明なのか分かります。 – wormwood
ここで例外が発生したようですhttps://dotnetfiddle.net/5M4tC5実行中に 'ErrorLog'メソッドで例外が発生する可能性はありますか? – Vache