Java

Где лучше обрабатывать исключения, напрямую в методе который их может создать или пробрасывать дальше через throws

и пусть хто вызовет метод его обработает ?
Смотря какие исключения и что вы вообще пишете.
Ясно, что у верхнего слоя абстракции должна быть возможность узнать подробную информацию о произошедшей ошибке в более нижнем слое (если нижний слой не может с ней справиться сам - скажем создать файл если его не существует).
А как это делать - через return, или Exception, или через расшаренный лог, или еще как - это уже по ситуации.

В Java стандартной системы с try-catch и исключениями определенно надо избегать, т. к. при наличии throws в нижнем слое абстракции, более верхний код в обязательном порядке засирается кучей try-catch'ей. А еще на Android при исключениях приложение тупо слетает даже без всякого дефолтного окна с логом.

Никто не мешает сделать несколько разных реализаций одного и того же метода: асинхронные - неасинхронные, с throws - без throws, с разным набором параметров и возвращаемым значением и т. д.
Сейчас это не модно (все ведь ищут единый лучший язык, единое лучшее средство, единое лучшее решение...), и в Java особенно - но этим-то она и плоха.
Слава Харин
Слава Харин
310
Лучший ответ
я прямо в методе делаю... но это моё личное дело...
потому как в обработке ничего особого не твою. только в лог пишу что случилось.
хотя бывают случаи... в методе может происходить "взаимодействие" и самой программы, и базы данных и ещё какого-то внешнего ресурса/сервиса... и если какая-то часть накосячила, может потребоваться откорректировать работу других частей... или хотя бы собрать достаточно данных чтобы вручную потом исправить косяк. и обо всём этом вызывающим кодам знать нет нужды. у них свои задачи.