でエラーを処理する場合Application_Error
、これら2つのうちどちらを使用する必要がありますか?
私は両方の例を複数見つけていますが、一方が他方より優れているかどうかははっきりしていません。1つだけが正しいエラーを表示する場合がありますか?
また、これが問題になるとは思えませんが、アプリケーションはMVC4を使用しています。
でエラーを処理する場合Application_Error
、これら2つのうちどちらを使用する必要がありますか?
私は両方の例を複数見つけていますが、一方が他方より優れているかどうかははっきりしていません。1つだけが正しいエラーを表示する場合がありますか?
また、これが問題になるとは思えませんが、アプリケーションはMVC4を使用しています。
それはあなたが正確に何を必要としているかによります。
Exception.GetBaseExceptionのドキュメントから:
派生クラスでオーバーライドされると、1つ以上の後続の例外の根本原因である例外を返します。
Application_Error
おそらくいくつかの例外処理メカニズムの後で、上位レベルで例外を処理します。したがって、例外が次のようにスローされた場合:
try {
//Lots of code, method calls, etc...
try {
throw new FooException("Foo");
} catch(FooException fe) {
throw new BarException("Bar", fe);
}
}catch(BarException be) {
throw new FooBarException("FooBar", be);
}
その後、GetLastError
あなたを取得しますがFooBarException
、あなたGetLastError().GetBaseException()
を取得しますFooException
。したがって、前者は実際の未処理の例外を返し、後者は根本原因を返します。
Foo、Bar、FooBarの例外クラスはオーバーライドしないと思いGetLastError
ますInnerException