try / finally block question

Нашел этот вопрос здесь

И я не могу понять, почему в первом случае он печатает CoolReturn + 1 , а во втором случае CoolReturn ? Как это работает?

Спасибо

====================

Что будет напечатано?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

Ответ: CoolReturn + 1

Немного сложнее:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

Ответ: CoolReturn

7
задан Community 23 May 2017 в 10:33
поделиться