Локальная переменная не инициализируется при использовании с попробовать поймать, но инициализируется, когда, наконец, используется с уловом . Почему?
public static void main (String args[] ) { int a ; try { a=4 ; } finally { } System.out.println (a ) ; }
Почему это не дает ошибки времени компиляции при использовании finally ? Я не в состоянии понять логику, стоящую за этим . Я понял случай, когда мы используем catch вместо finally, и это дает ошибку времени компиляции . Но почему не здесь ?
Что я уже пробовал:
Я запустил это на IDE Netbeans .
[no name]
"Почему это не дает ошибки времени компиляции", почему вы думаете, что это должно быть?
"Я не в состоянии понять логику", почему бы и нет? Вам уже все объяснили.
Может быть, вам стоит начать учиться проводить исследования самостоятельно, а не задавать вопросы другим? один и тот же вопрос снова и снова и снова
https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
Richard MacCutchan
Потому что выражение a=4
не будет выдавать исключение, поэтому оно всегда будет установлено в finally
пункт.
Richard MacCutchan
Посмотрите, насколько легче читать, когда код отформатирован правильно, а текст оставлен обычным шрифтом.