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