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