Это считается плохим стилем, поскольку исключения должны представлять собой исключительные условия, которые вряд ли могут возникнуть при нормальном выполнении, и которые указывают на то, что что-то пошло не так. Использование исключений для проверки того, являются ли объекты нулями, использует это оборудование для проверки более мирских сбоев. Как упоминалось в сообщении Константина, есть также штраф за выполнение за исключением исключений. Кроме того, обертывание всех ошибок в одном из NullPointerException
означает, что вы теряете информацию о том, что, в частности, пошло не так. Какая функция вернулась null
? Это из-за обычных ошибок, или что-то более серьезное происходит?
Есть и другие варианты, которые вы не учли здесь. Вместо того, чтобы иметь a()
, b(),
и т. Д., Возвращать null
, чтобы сигнализировать об ошибке, подумайте о том, чтобы они бросили более подробные исключения, объясняющие, почему они не могут что-то вернуть. Если они потерпят неудачу из-за падения сетевого соединения, попросите их бросить IOException
или что-то подобное. Если они терпят неудачу, потому что у вас есть плохой индекс в массиве, сделайте это также ясным.
Короче говоря, если вы хотите использовать исключения, используйте их, чтобы более точно уведомить остальную часть программы о том, что произошло. Таким образом, вы можете предпринять более мелкие корректирующие действия.
Я думаю, что использовать исключения для управления потоком управления плохо. – Sweeper