плохой дизайн? класс, который может вызвать ошибку в пакете - PullRequest
1 голос
/ 23 апреля 2009

Предположим, я создаю некоторый клиентский код, состоящий из пары классов. Пользователь может создать класс / объект, который вызывает исключение. Это плохой дизайн? Должен ли ваш идеальный код быть таким, чтобы кто-то не мог вызвать исключение?

Ответы [ 4 ]

2 голосов
/ 23 апреля 2009

Нет, шаблоны проектирования не обесценивают исключения. В вашей библиотеке могут быть части / функции, для которых требуется сильная / слабая гарантия исключения. Но это полностью зависит от библиотеки.

1 голос
/ 23 апреля 2009

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

Первым примером, о котором я подумал, была функция System.IO.File.Delete(string) .NET, которая будет выдавать исключение, если удаляемый файл не найден.

1 голос
/ 23 апреля 2009

Нет, каждый API, который я использовал, вполне способен генерировать исключения. Рассмотрим этот вариант; вы передаете некоторые «плохие» данные классу фреймворка. Что бы вы предпочли бы случиться; выдается исключение, которое сразу же делает проблему очевидной, или вызов молча прерывается, и вы часами пытаетесь выяснить, почему ваш код не работает?

0 голосов
/ 23 апреля 2009

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

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