Кузнецов Алексей @firelord
User
Коды возврата vs исключения — битва за контроль ошибок

если это «тупой перехват» — с целью не возиться, тогда я бы сам вдарил ;) а если известно, что логика для всех возможных исключений — одна и та же, и они все наследуются от общего предка — тогда зачем на каждый класс писать одинаковый обработчик? в Яве, к примеру (кто про что, а шелудивый — про баню ;) от Exception наследуются ожидаемые исключения (которые требуют объявления в интерфейсе метода), а неожиданные — это RuntimeException, которым объявление не требуются. так вот, если я знаю, что у меня в коде могут возникнуть три вида ожидаемых исключений — и на все их я буду одинаково реагировать, я просто перехватываю Exception — а переполнение стека или что-нибудь еще такое вылетит у меня по RuntimeException ;) всегда мы упираемся в вопрос проектирования — в значительной степени, это касается базовых классов и библиотек. которые, к сожалению, слишком часто пишутся такими же людьми, как мы сами ;)
Look
Коды возврата vs исключения — битва за контроль ошибок

на самом деле, мне кажется, выбор между исключениями и кодами возврата заключается в ответе на вопрос: где будет обрабатываться ошибка(нестандартная ситуация)? если в той же части кода, что и вызывает код, генерирующий нестандартную ситуацию — тогда код возврата может быть проще. если же перехватчик может лежать гораздо выше в стеке вызова — тогда передача кодов возврата наверх может быть слишком громоздкой, поскольку потребуется проверка на каждом уровне. в моем представлении, «file not found» — это для кода возврата, а read error — это уже исключение (хотя зависит от контекста)
Look
Коды возврата vs исключения — битва за контроль ошибок

ну, тут есть одна хитрость — которая иногда помогает ;) можно написать отдельный catch на те эксепшены, которые надо перехватывать — а на остальные повесить просто catch(Exception) — или вообще, Throwable. к примеру, FileNotFoundException extends IOException — так что достаточно одного catch(IOException) в блоке обработки… но в целом, соглашусь с Вами — многие checked можно было бы пускать через RuntimeException.
Look
Коды возврата vs исключения — битва за контроль ошибок

Когда начинал изучать Яву, показалось, что там слишком много исключений — там, где можно было бы обойтись кодами возврата (открытие несуществующего файла — к примеру). По прошествии… пяти? лет — все еще считаю, что исключений слишком много ;) Хотя сам активно их использую…
Look
24-летний студент начал войну против Facebook

я тоже хочу в суд на фэйсбук — после того, как он отказался меня регистрировать по адресу info@личный домен — сказав, что такой почты не существует! я оскорблен!
Look
Information
- Rating
- Does not participate
- Location
- Россия
- Date of birth
- Registered
- Activity