Я спрашиваю это в основном о Java, но полагаю, что это применимо к целому ряду языков.
Рассмотрим,
if(myVariable==null){
doSomethingAboutIt();
}
else carryOn(myVariable);
и
try{
carryOn(MyVariable);
}catch(NullPointerException e ){
doSOmethingAboutIt();}
Являются ли оба этих блока кода по сути одним и тем же? Есть ли причины выбрать второй подход? Конечно, было бы лучше, если бы myVariable никогда не была нулевой, но кажется, что лучший способ проверить это - сделать простое if-выражение.