Перехват исключений на страницах .aspx и .ascx
-
02-07-2019 - |
Вопрос
Вопросы говорят все, возьмем этот пример кода:
<ul id="css-id">
<li>
<something:CustomControl ID="SomeThingElse" runat="server" />
<something:OtherCustomControl runat="server" />
</li>
</ul>
Теперь, если где-то внутри этих элементов управления (которые расположены на главной странице) возникнет ошибка, они отключат весь сайт, как можно отловить эти исключения?
Решение
Вы можете перехватить все исключения, не обработанные где-либо еще на странице/классе Global.asax.Посмотри на:
protected void Application_Error(Object sender, EventArgs e)
метод.
Другие советы
К сожалению, необработанное исключение всегда приведет к ошибке на вашем сайте.Однако вы можете предотвратить это несколькими способами.
- Используйте этот раздел в вашем web.config, чтобы показать удобное для пользователя сообщение.
- В вашем Global.asax - или пользовательском обработчике - перехватите необработанное исключение и отреагируйте соответствующим образом - так
лучшее решение
- Убедитесь, что ваши элементы управления не выдают необработанные исключения!
Добавьте global.asax и реализуйте обработчик Application_Error.Используйте функцию Server.GetLastError(), чтобы получить дескриптор выброшенного исключения.
Используя метод global.asax Application_Error, как описано в Как создать собственные страницы отчетов об ошибках в ASP.NET с помощью Visual C# .NET.
Альтернативным подходом может быть использование HTTP-модуль;это дает вам больше гибкости (например, вы можете обрабатывать ошибки из нескольких приложений).
Хотите перехватить исключение и обработать его?
Или вы хотите предотвратить Желтый Экран Смерти?Если вы пытаетесь предотвратить Желтый Экран Смерти, обратите внимание на то, как справиться с Error
мероприятие на HttpApplication
(другими словами, в вашем Global.asax).
Дополнительные сведения см. на следующей странице MSDN:http://msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx
Конкретно этот абзац:
Доступ к исключению, вызывающему событие Error, можно получить путем вызова метода GetLastError.Если ваше приложение генерирует собственный вывод ошибок, подавите сообщение об ошибке по умолчанию, создаваемое ASP.NET путем вызова метода ClearError.