Нет, эти кодовые блоки совсем не одинаковы.
В первом блоке кода вы проверяете, является ли myVariable
значением null
, и вы делаете это только в один момент времени.Позже, myVariable
может стать null
и в конечном итоге бросить NullPointerException
.Если это произойдет, второй фрагмент кода будет перехватывать исключение, а первый - нет.
Более того, второй фрагмент кода перехватит NullPointerExceptions
, который может быть сгенерирован из любого места в стеке вызовов в результате carryOn(myVariable)
звонок.Это ужасно ;вы проглатываете исключение, работающее в предположении, что конкретной переменной является null
, когда она может быть чем-то совершенно другим.
Использовать первый фрагмент кода.