Java
Где лучше обрабатывать исключения, напрямую в методе который их может создать или пробрасывать дальше через throws
и пусть хто вызовет метод его обработает ?
Смотря какие исключения и что вы вообще пишете.
Ясно, что у верхнего слоя абстракции должна быть возможность узнать подробную информацию о произошедшей ошибке в более нижнем слое (если нижний слой не может с ней справиться сам - скажем создать файл если его не существует).
А как это делать - через return, или Exception, или через расшаренный лог, или еще как - это уже по ситуации.
В Java стандартной системы с try-catch и исключениями определенно надо избегать, т. к. при наличии throws в нижнем слое абстракции, более верхний код в обязательном порядке засирается кучей try-catch'ей. А еще на Android при исключениях приложение тупо слетает даже без всякого дефолтного окна с логом.
Никто не мешает сделать несколько разных реализаций одного и того же метода: асинхронные - неасинхронные, с throws - без throws, с разным набором параметров и возвращаемым значением и т. д.
Сейчас это не модно (все ведь ищут единый лучший язык, единое лучшее средство, единое лучшее решение...), и в Java особенно - но этим-то она и плоха.
Ясно, что у верхнего слоя абстракции должна быть возможность узнать подробную информацию о произошедшей ошибке в более нижнем слое (если нижний слой не может с ней справиться сам - скажем создать файл если его не существует).
А как это делать - через return, или Exception, или через расшаренный лог, или еще как - это уже по ситуации.
В Java стандартной системы с try-catch и исключениями определенно надо избегать, т. к. при наличии throws в нижнем слое абстракции, более верхний код в обязательном порядке засирается кучей try-catch'ей. А еще на Android при исключениях приложение тупо слетает даже без всякого дефолтного окна с логом.
Никто не мешает сделать несколько разных реализаций одного и того же метода: асинхронные - неасинхронные, с throws - без throws, с разным набором параметров и возвращаемым значением и т. д.
Сейчас это не модно (все ведь ищут единый лучший язык, единое лучшее средство, единое лучшее решение...), и в Java особенно - но этим-то она и плоха.
я прямо в методе делаю... но это моё личное дело...
потому как в обработке ничего особого не твою. только в лог пишу что случилось.
хотя бывают случаи... в методе может происходить "взаимодействие" и самой программы, и базы данных и ещё какого-то внешнего ресурса/сервиса... и если какая-то часть накосячила, может потребоваться откорректировать работу других частей... или хотя бы собрать достаточно данных чтобы вручную потом исправить косяк. и обо всём этом вызывающим кодам знать нет нужды. у них свои задачи.
потому как в обработке ничего особого не твою. только в лог пишу что случилось.
хотя бывают случаи... в методе может происходить "взаимодействие" и самой программы, и базы данных и ещё какого-то внешнего ресурса/сервиса... и если какая-то часть накосячила, может потребоваться откорректировать работу других частей... или хотя бы собрать достаточно данных чтобы вручную потом исправить косяк. и обо всём этом вызывающим кодам знать нет нужды. у них свои задачи.
Похожие вопросы
- Throw throws где и как используется?
- Помогите пожалуйста написать методы,java, Кто даст ответ дам 100 балов подарком ОТВЕТ ДАЙТЕ СЕГОДНЯ ЭТО СРОЧНО!!!!!!!!!!
- Почему неконтролируемые исключения не требуют обязательной обработки? Java.
- Как создать цикл, который будет считать количество минимальных значений массива на джава
- Почему в Java метод main является static? Почему в Java метод main является static?
- Зачем создают приватные переменные, а затем делают их общедоступными через публичные методы?
- Класс String и его методы
- Стоит ли во всех случаях сделать методы класса статичным, если они не используют абсолютно никакое поле класса?
- 2.11 Практическая работа Создайте проект с именем AgeComparator,я зделал небольшой прект можете его пж доработать?
- Как создать уникальное расширение файла.