Jestem świadomy istnieje wiele pytań w SO obsługi w ASP.NET MVC o błąd.Zalety [HandleError] nad Application_Error
widzę, przeważnie ludzie starają się osiągnąć rzeczy na trzy sposoby:
Tworzenie
BaseController
i zastąpić metodęKorzystanie
[HandleError]
lub niestandardowe wyjątków filtryOnException
.Application_Error
wydarzenie w Global.asax.cs
Pierwsze dwa sposoby, nie może obsługiwać wszystkie wyjątki i robią tylko, które są podnoszone przez metod działania/filtrów, więc oczywiście trzeci jest będzie najlepszym podejściem do globalnej obsługi wyjątków.
Moje pytanie brzmi: dlaczego powinienem wybrać podejście [HandleError]
? Jakie korzyści daje to, że nie mogę przejść przez Application_Error
?
Wreszcie, czy chcę, aby sekcja customErrors
była poważna w ogóle w aplikacji MVC?
Uwaga: Moje wymagania są typowe. Gdy wystąpi wyjątek, zaloguj się i zwróć niestandardową stronę błędu. Strona błędu niestandardowego może się zmieniać w zależności od kodu statusu.
Nie widzę powodu, dla którego ktoś chciałby inaczej obsługiwać błędy w różnych kontrolerach i działaniach. Ok, jeśli zrobię tę logikę w [HandleError], to znowu chcę to zrobić w Global.asax, prawda? – VJAI
Strona różnych błędów dla urządzeń mobilnych? Spersonalizowana strona błędów dla użytkowników? Fragment HTML dla żądań ajaxowych? Niestandardowy obraz błędu dla linków z uszkodzonymi obrazami? Dostęp do zabronionych stron błędów dla niektórych kontrolerów? Nietrudno wymyślić powody, by inaczej obsługiwać błędy. – bhamlin