Я создаю переменную, называемую «имя_файла» в обеих ветвях блока try-catch, поэтому она должна быть доступна независимо от того, выбрана ли ошибка или нет.Переменная в Try-Catch недоступна для другого блока Try-Catch?
Но, увы, когда я пытаюсь использовать переменную «имя_файла» в следующем блоке try-catch, я получаю «не могу найти символ».
package timelogger;
import java.io.IOException;
public class TimeLogger {
public static void main(String[] args) throws IOException {
try {
String file_name = args[0];
}
catch (IndexOutOfBoundsException e){
String file_name = "KL_Entries.txt";
}
try {
ReadFile file = new ReadFile(file_name);
String[] aryLines = file.OpenFile();
int i;
for (i=1; i < aryLines.length - 2; i++) { //-2 because last two lines not entries
//System.out.println(aryLines[ i ]) ;
}
System.out.println(aryLines[1].charAt(24));
System.out.println(aryLines[1].charAt(48));
}
catch (IOException e){
System.out.println(e.getMessage());
}
}
}
Я попытался сделать «имя_файла общественного типа String = ...» вместо этого, но это дало ошибку «незаконное начало выражения» или что-то.
Как это сделать? Я чувствую, что мне не хватает чего-то глупого.
EDIT: Найдено this, указав, что переменные являются локальными для блоков try-catch. Таким образом, исправлена проблема, объявив переменную вне try-catch и затем давая ей значения в блоке try-catch.
объявить свое 'имя_файла' за пределами первой попытки/уловить, но инициализировать его так, как вы сейчас делаете. – gonzo