Clean Code
13.3K subscribers
2.32K photos
5 videos
2.97K links
Советы по написанию кода, обзоры распространенных ошибок и многое другое.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

РКН: clck.ru/3Ht6ch
加入频道
Генерируйте исключения на правильном уровне абстракции

Интерфейс метода и класса должен представлять собой целостную абстракцию. Генерируемые исключения такая же часть интерфейса, как и специальные типы данных.

Функция GetTaxId() передает низкоуровневое исключение EOFException вызывающей стороне. Она не обрабатывает исключение сама, а раскрывает некоторые детали своей реализации, генерируя низкоуровневое исключение.

Вместо этого код GetTaxId() должен передавать исключение, соответствующее интерфейсу класса, частью которого он является. Код обработки исключений внутри GetTaxId(), возможно, просто устанавливает соответствие между исключениями io_disk_not_ready и EmployeeDataNotAvailable,
что гораздо лучше, так как сохраняется абстракция интерфейса.

#tips #exception