2013-02-26 10 views

Odpowiedz

6

To zależy od tego, co dokładnie trzeba zrobić.

Z documenation z Exception.GetBaseException:

Kiedy nadpisane w klasie pochodnej, zwraca Exception to jest przyczyną jednego lub więcej kolejnych wyjątków.

Application_Error obsługuje wyjątki na górnym poziomie, może po kilku mechanizmów obsługi wyjątków, więc jeśli jest wyjątek tak:

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

następnie GetLastError będzie Ci FooBarException, natomiast GetLastError().GetBaseException() będzie Ci FooException. Tak więc ten pierwszy zwraca faktyczny nieobsługiwany wyjątek, podczas gdy drugi zwraca główną przyczynę.

Zakładam, że Foo, bar i foobar klasy wyjątków nie zastępują GetLastError lub InnerException

+0

Nicea wyjaśnienia. Chcę nieobsługiwanego wyjątku, więc 'GetLastError()' jest. – Stijn

Powiązane problemy