Перехват исключений на страницах .aspx и .ascx - PullRequest
2 голосов
/ 26 сентября 2008

Вопросы говорят все, возьмите этот пример кода:

<ul id="css-id">
    <li>
    <something:CustomControl ID="SomeThingElse" runat="server" />
    <something:OtherCustomControl runat="server" />
    </li>
</ul>

Теперь, если где-то внутри этих элементов управления (которые расположены на главной странице) выдается ошибка, они уничтожат весь сайт, как можно перехватить эти исключения?

Ответы [ 5 ]

5 голосов
/ 26 сентября 2008

Вы можете перехватить все не обработанные исключения, которые есть в странице / классе Global.asax. Посмотрите на:

protected void Application_Error(Object sender, EventArgs e)

способ.

2 голосов
/ 26 сентября 2008

К сожалению, необработанное исключение всегда приведет к ошибке вашего сайта. Вы можете предотвратить это несколькими способами.

  • Используйте раздел в вашем web.config, чтобы показать сообщение, удобное для пользователя
  • В вашем Global.asax - или пользовательском обработчике - перехватите ваше необработанное исключение и отреагируйте соответствующим образом - вот так

лучшее решение

  • Убедитесь, что ваши элементы управления не генерируют необработанные исключения!
1 голос
/ 26 сентября 2008

Хотите перехватить исключение и обработать его?

Или вы хотите предотвратить желтый экран смерти? Если вы пытаетесь предотвратить «Желтый экран смерти», посмотрите на обработку события Error на HttpApplication (другими словами, в вашем Global.asax).

См. Следующую страницу MSDN для получения более подробной информации: http://msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx

В частности, этот абзац:

Исключение, которое вызывает событие Error, может быть вызвано вызовом метода GetLastError. Если ваше приложение генерирует пользовательский вывод ошибок, подавьте сообщение об ошибке по умолчанию, сгенерированное ASP.NET, путем вызова метода ClearError.

1 голос
/ 26 сентября 2008

Использование метода global.asax Application_Error, как описано в Как создать пользовательские страницы отчетов об ошибках в ASP.NET с помощью Visual C # .NET .

Альтернативным подходом было бы использование HTTP-модуля ; это дает вам больше гибкости (например, вы можете обрабатывать ошибки из нескольких приложений).

1 голос
/ 26 сентября 2008

Добавьте global.asax en для реализации обработчика Application_Error. Используйте функцию Server.GetLastError (), чтобы получить дескриптор выданного исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...