Конечно, это так.
В большинстве случаев ваши переменные не должны быть нулевыми для начала.Многие новые языки предлагают встроенную поддержку необнуляемых ссылочных типов, то есть типов, которые гарантированно никогда не будут нулевыми.сделать проверку.Но исключения, безусловно, плохой способ сделать это.
Оператор if требует выполнения, возможно, трех инструкций и является локальной проверкой (т.е. вы делаете проверку в том же месте, где вам нужна гарантия).
Использование исключения, с другой стороны, может потребовать гораздо большего количества инструкций - система пытается найти метод, не удается, просматривает таблицу исключений для соответствующего обработчика исключений, переходит туда, выполняет обработчики снова прыгает.Кроме того, проверка потенциально не является локальной.Если ваш код выглядит примерно так:
try
return contacts.find("Mom").getEmail()
catch (NullPointerException e)
return null
Вы не знаете, был ли NPE брошен в 'getEmail' или в 'find'.
Технически худшее решение для очень, очень распространенного шаблона, написанного более запутанным способом?Это не звание, но оно определенно пахнет плохо: /