Спасибо, что написали. Я согласен со всеми, кроме одного: не следует писать каждый метод с обработчиком исключений. Это означает, что вы знаете, что делать в случае возникновения исключений, а это просто неправда. Вам нужен контекст для обнаружения и обработки ошибки, которой сами по себе методы обычно не имеют. И если вы перехватываете исключения и используете его для управления выводом вашего метода, то вы, по сути, используете исключения как средство для потока управления. Это антипаттерн.

Вы также перешли к выбрасыванию исключений. Единственное, о чем я скажу, это то, что вы должны генерировать исключения только тогда, когда ваш метод работает с недопустимым состоянием, например с недопустимым набором параметров. Теоретически следует стремиться к этой мысли: если у вас есть объект, значит, он действителен. Обычно это означает, что метод должен генерировать исключения только тогда, когда что-то имеет значение null. В противном случае, если вы выбрасываете исключения по другим причинам, вы потенциально можете просить своих потребителей использовать его для потока управления, или, что не менее плохо, ваше исключение содержит детали, раскрывающие источник исключения, и это плохой дизайн объектно-ориентированного подхода, поскольку это было бы нарушать инкапсуляцию.

В общем, отличная статья. Исключения - это то, что мы все должны лучше понимать, и, вероятно, этому можно было бы посвятить целую статью.

Спасибо, что написали.

~ jgo