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
Nicea wyjaśnienia. Chcę nieobsługiwanego wyjątku, więc 'GetLastError()' jest. – Stijn