Захотелось поразмыслить по-поводу как лучше. В институтах нам говорят - делайте так:
try{
}catch(NullPointerException){
}catch(JSONParserException){
}catch
.
.
.}finally{
}
один хороший программист мне подсказал, что лучше использовать такую вот метафору:
try{
.
.
.
}catch(Throwable th){
if(th instanceof NullPointerException){
}
if(th instanceof ClassCastException){
}
}
Хорошенько подумав, пришел к выводу, что в принципе в данном подходе, с точки зрения отказоустойчивости все отдлично - по сути можно обработать необходимые ошибки и если возникнет необработанная - приложение продолжит работу. Но, как мне кажеться - тут и кроеться основная проблема данного подхода - можно просто пропустить какое-либо уведомление об ошибке, даже выводя всегда в лог сообщение - лог загружен и ошибка может остаться незамеченной, причинив в итоге уйму проблем, например с вычислениями или нулевыми значениями.
С другой стороны - данный подход удобен с точки зрения тестирования. При возникновении ошибки на процессе тестирования - мы можем выводить сообщение, содержащее краткое сообщение об ошибке, и благодаря ему уже сможем смотреть в лог. Удобен такой подход с точки зрения пользователя и уменьшения негативных отзывов в маркете, как по мне. Было бы интересно узнать еще чьё-то мнение
пацаны читайте Effective Java)))
ОтветитьУдалитьОбработка любой ситуации должна принадлежать тому же обработчику который генерит исключение. Леха, круто, но ты пересказал полностью мысли Блоха.
Не дошел еще до исключительных ситуаций у Блоха. Спасибо за коммент, Дема!
ОтветитьУдалить