Вы не должны использовать обработку исключений в форме Try Catch.Скорее, это должно быть
- Ошибка уровня страницы
- Ошибка уровня приложения
Предположим, у вас есть уровень презентации и уровень бизнес-логики / уровень DataAccess.
При возникновении ошибки, скажем, в Business Logic, он будет перемещен непосредственно в файл Glogal.asax.cs в Event_Error Event, не возвращаясь к вызывающей функции.Здесь вы можете записать сообщение об ошибке, как показано ниже ....
HttpContext.Current.Server.GetLastError().InnerException.StackTrace
HttpContext.Current.Server.GetLastError().InnerException.Message
HttpContext.Current.Server.GetLastError().InnerException.Source
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.FullName
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.Name
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.Namespace
В случае ошибки на уровне страницы приоритетом является переопределение страницы OnError и, наконец, событие ошибки уровня приложения.здесь также вы можете регистрировать ошибки.
Я предпочту обработчик Application_error, потому что если у вас есть 20 модулей, и возникает ситуация, когда вам нужно создать базовый класс для каждого модуля.Нехорошо создавать избыточность кода.
Теперь в веб-конфигурации вы можете написать код для перенаправления пользователя на страницу по умолчанию, как показано ниже.
<customErrors defaultRedirect="ErrorPage.htm" mode="On">
<error statusCode="404" redirect="ErrorPageNotFound.htm"/>
</customErrors>