我需要使用try-catch,但是它说这是一个无法到达的catch块。如何使其可访问?

时间:2019-02-10 17:50:07

标签: java try-catch filenotfoundexception

我是编码的新手,对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的Unreachable catch块。永远不会从try语句主体中抛出此异常”

我应该在try语句中输入什么?我很迷茫

2 个答案:

答案 0 :(得分:1)

  

修复该错误后,直到尝试对文本文件进行硬编码以进行测试为止,我再没有收到该错误。

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

    //insert code

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

我再次收到“ FileNotFoundException的Unreachable catch块。

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)会抛出FileNotFoundException

答案 1 :(得分:0)

欢迎您!异常是捕获错误并决定如何处理错误的好方法。某些代码段要求程序飞跃并尝试执行当时可能无法执行的任务。

问题中指定的错误是由于扫描程序未在指定的文件路径中找到文件而导致的。 ArrayIndexOutOfBounds准确指示异常所指出的内容。正在访问的索引在数组的边界(大小)之外。

Java文档是一个很好的资源,这应该有助于阐明catch语句的目的。 https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html