2013-02-26 25 views
5

Application_Errorでエラーを処理する場合、どちらを使用する必要がありますか?Application_Error - GetLastError()またはGetLastError()。GetBaseException()

私は両方で複数の例を見つけていますが、一方が他方よりも優れているかどうかは明らかではありません。正しいエラーが1つだけ表示されるケースはありますか?

はまた、私はこの問題を疑うが、アプリケーションはそれが正確にあなたが必要とする何をするかに依存MVC 4

答えて

6

を使用しています。 Exception.GetBaseExceptionのdocumenationから

派生クラスでオーバーライドされると、後続の1つの以上の例外の根本的な原因であるExceptionを返します。 GetLastError().GetBaseException()はあなたにFooExceptionを得るでしょうしながらGetLastErrorは、あなたにFooBarExceptionを取得します

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); 
} 

:例外は、次のようにスローされますので、もし

Application_Errorは、おそらくいくつかの例外処理メカニズムの後、上位レベルで例外を処理します。したがって、前者は未処理の例外を返し、後者は根本原因を返します。

私はFooの、バーとFooBarの例外クラスがGetLastErrorInnerException

+0

ニースの説明を上書きしないことを前提としています。私は未処理の例外が必要なので、 'GetLastError()'です。 – Stijn

関連する問題