Мне нужно использовать try-catch, но он говорит, что это недоступный блок catch.Как мне сделать это доступным? - PullRequest
0 голосов
/ 10 февраля 2019

Я новичок в кодировании и очень плохо знаком с Java, поэтому, пожалуйста, потерпите меня, извините.

Мой профессор говорит, что нам нужно использовать следующий код как часть нашего задания.Я просмотрел все свои заметки для класса, и я не могу найти что-нибудь на try-catch, и я не уверен, что я должен вставить в часть кода вставки или что означает сообщение об ошибке

Мне очень жаль, я просто очень смущен.Я продолжаю получать сообщение «Недоступный блок перехвата для FileNotFoundException. Это исключение никогда не вызывается из тела оператора try», и я не знаю, как его исправить

try 
{
    File file = new File( args [ 0 ] );
    Scanner scanner = new Scanner( file );

    //insert code

    scanner.close();
}
catch  (FileNotFoundException e)
{
 e.printStackTrace();
}

Редактировать: я не получил эту ошибку сновапосле исправления, пока я не попытался жестко запрограммировать текстовый файл для проверки.

try 
{
    File file = new File( args [ 0 ] );
    Scanner scanner = new Scanner("cat.txt");

    //insert code

    scanner.close();
}
catch  (FileNotFoundException e)
{
 e.printStackTrace();
}

Я снова получаю «Недоступный блок перехвата для FileNotFoundException. Это исключение никогда не выдается из тела оператора try»

Что я должен добавить в оператор try?Я так потерян

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Я не получил эту ошибку снова после ее исправления, пока не попробовал жестко запрограммировать текстовый файл для проверки.

try 
{
    File file = new File( args [ 0 ] );
    Scanner scanner = new Scanner("cat.txt");

    //insert code

    scanner.close();
}
catch  (FileNotFoundException e)
{
 e.printStackTrace();
}

Я снова получаю "Недостижимый блок захвата дляFileNotFoundException.

new Scanner(String) - это не то же самое, что new Scanner(File). Если вы посмотрите на документацию, первое (с использованием String) читает из строки , а не из файла. Поскольку файл не используется, FileNotFoundException.

не требуется. Если вы хотите жестко закодировать имя файла в целях тестирования, сделайте это вСтрока new File(...), а не строка new Scanner(...):

try 
{
    File file = new File("cat.txt");      // <==== Here
    Scanner scanner = new Scanner(file);

    //insert code

    scanner.close();
}
catch (FileNotFoundException e)
{
    e.printStackTrace();
}

Это скомпилируется, потому что new Scanner(File) throws FileNotFoundException.

0 голосов
/ 10 февраля 2019

Добро пожаловать на ТАК!Исключения - отличный способ отловить ошибки и решить, как их устранять.Некоторые сегменты кода требуют, чтобы программа сделала скачок и попыталась выполнить задачу, которая может быть невозможна в данный момент.

Ошибки, указанные в вопросе, являются результатом того, что Сканер не может найти файл по указанному пути к файлу.ArrayIndexOutOfBounds точно указывает состояние исключения.Индекс, к которому осуществляется доступ, находится за пределами (размера) массива.

Документы Java - отличный ресурс, и это должно помочь прояснить цель операторов catch.https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

...