Обработка исключений в веб-приложениях .NET

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

8
задан NakedBrunch 11 September 2008 в 10:44
поделиться

6 ответов

Шаблоны Microsoft и команда Методов сделали хорошее задание, включающее лучшие практики управления исключением в Блок приложений Обработки исключений Библиотеки Предприятия

Событие, если не пользовался бы Библиотекой Предприятия, я настоятельно рекомендую Вам для чтения их документации. Команда P&P описывает общие сценарии и лучшие практики для обработки исключений.

Для запущения Вас, я рекомендую чтение после статей:

ASP.NET определенные статьи:

11
ответ дан 5 December 2019 в 07:37
поделиться

Золотое правило с обработкой исключений:

"Только поймайте то, что Вы знаете, как обработать"

Я видел слишком много блоков try-catch, где выгода действительно только повторно бросает исключение. Это не добавляет значения. Просто, потому что Вы называете метод, который имеет потенциал для выдачи исключения, не означает, что необходимо иметь дело за возможным исключением с кодом вызова. Часто совершенно приемлемо позволить исключениям распространить стек вызовов к некоторому другому коду, который действительно знает, что сделать. В некоторых случаях это допустимо, чтобы позволить исключениям распространить полностью до слоя пользовательского интерфейса, затем ловят и отображают сообщение пользователю. Могло бы случиться так, что никакой код не лучше всего помещается, чтобы знать, как обработать ситуацию, и пользователь должен решить план действий.

7
ответ дан 5 December 2019 в 07:37
поделиться

Я рекомендую запустить путем добавления хорошей ошибочной страницы, которая ловит все исключения и печатает немного менее недружелюбное сообщение пользователю. Обязательно зарегистрируйте все детали, доступные из исключения, и пересмотрите это. Позвольте пользователю знать, что Вы сделали это и даете ему ссылку назад на страницу, которая будет (вероятно), работать.

Теперь, используйте тот журнал для обнаружения, куда специальная обработка исключений должна быть помещена на месте. Помните, что там бесполезен в ловле исключения, если Вы не планируете сделать что-то с нею. Если у Вас есть вышеупомянутая страница на месте, там бесполезен в ловле исключений базы данных индивидуально на всех операциях дб, если у Вас нет некоторого особенного метода восстановиться в том отдельном моменте.

Помните: Единственная вещь, хуже, чем не ловля исключений, ловит их и ничего не не делает. Это только скроет настоящие проблемы.

2
ответ дан 5 December 2019 в 07:37
поделиться

Начнитесь с глобальным обработчиком исключений, таким как http://code.google.com/p/elmah/.

Затем вопрос сводится, какое приложение Вы запись и какой пользовательский опыт делают необходимо обеспечить. Чем более богатый пользовательский опыт, тем лучшая обработка исключений Вы захотите обеспечить.

Как пример рассматривают фотографию, размещающую сайт, который имеет выделенные дисковые пространства, пределы размера файла, пределы размера изображения, и т.д. Для каждой ошибки Вы могли просто возвратить "Ошибку, произошел. Попробуйте еще раз". Или Вы могли войти в подробную обработку ошибок:

  • "Ваш файл к большому. Максимальные размеры файла составляют 5 МБ".
  • "Ваше изображение, к большому. Максимальные размеры 1200x1200".
  • "Ваш альбом полон. Максимальная емкость хранения составляет 1 ГБ".
  • "Была ошибка с Вашей загрузкой. Наши hampsters недовольны. Возвратитесь позже".

и т.д. и т.д.

Нет никаких соответствий размера всех для обработки исключений.

1
ответ дан 5 December 2019 в 07:37
поделиться

Мог бы быть больше об обработке исключений в целом, чем ASP.NET speific, но:

  • Попытайтесь поймать исключения максимально близко к причине так, чтобы можно было записать (регистрируют) как можно больше информации об исключении.
  • Включайте некоторую форму выгоды все, обработчик исключений последнего средства в точках входа к Вашей программе. В ASP.NET это могло быть обработчиком ошибок Прикладного уровня.
  • Если Вы не знаете, как "правильно" обработать исключение, позволяют ему пузырь до выгоды весь обработчик, где можно рассматривать его как "неожиданное" исключение.
  • Используйте Попытку ***** методы в.NET для вещей как доступ к Словарю. Это помогает избежать главных проблем производительности (обработка исключений является относительно медленной) при выдаче нескольких исключений в, говорит цикл.
  • Не используйте обработку исключений для управления нормальной логикой программы, например, выходящий от цикла через оператор броска.
1
ответ дан 5 December 2019 в 07:37
поделиться

Хорошо на очень простом уровне необходимо обрабатывать HttpApplication. Событие Error в файле Global.asax. Это должно зарегистрировать любое исключение, которое происходит с единственным местом, таким образом, можно рассмотреть отслеживание стека исключения.

Кроме этого базового уровня необходимо идеально обрабатывать исключения, где Вы знаете, что можно восстановиться от них - например, если бы Вы ожидаете, что файл мог бы быть заблокирован, затем обработав IOException, и сообщение ошибки пользователю было бы хорошей идеей.

0
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: