Правильный способ обработки исключений в UserControl

Я создаю UserControl, и я не уверен, как обрабатывать исключения, сам элемент управления не очень сложен, пользователь выбрал изображение с диска, чтобы он мог его авторизовать, я точно не знаю, как будет использоваться элемент управления поэтому, если я использую MessageBox, я могу заблокировать приложение, а если я просто переброшу его повторно, я могу вывести его из строя.

заранее спасибо.

Хуан Замудио

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 262
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Да, это правда, но что насчет исключения IOException, я могу его поймать, но что мне с ним делать, я могу уведомить об ошибке с помощью MessageBox или «желтой полосы» а-ля IE. или просто молча справиться с этим.

Juan Zamudio 13.11.2008 20:16
Ответ принят как подходящий

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

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

ОБНОВИТЬ: Хорошее введение - http://se.ethz.ch/~meyer/publications/computer/contract.pdf

С уважением, тамберг

Хорошее введение - se.ethz.ch/~meyer/publications/computer/contract.pdf

tamberg 14.11.2008 02:19

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

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

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

С уважением,
откровенный

Другие вопросы по теме