我需要用一个try-catch,但它说,它是不可到达的catch块。我如何使它到达?

问题描述 投票:-1回答:2

我是新来的编码,并很新的Java,所以请原谅,我很抱歉。

我的教授说,我们需要使用下面的代码作为我们的任务的一部分。我已经通过我的笔记类看,我找不到的try-catch什么,我不知道我应该放在插入代码的一部分或者是什么错误信息手段

我很抱歉,我只是很困惑。我不断收到“为FileNotFoundException异常无法到达的catch块。这个异常是永远不会从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异常无法到达的catch块。这个异常是永远不会从try语句体抛出”

那我应该把try语句?我很失落

java try-catch filenotfoundexception
2个回答
1
投票

我没有,直到我试图硬编码的文本文件来测试的事情了修正后再得到这个错误。

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

    //insert code

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

我再次收到“无法到达catch块的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)抛出FileNotFoundException


0
投票

欢迎来到SO!例外的是捕获错误,并决定如何处理它们的好方法。一些代码段要求的程序采取的飞跃,并试图执行可能不会在那一刻成为可能的任务。

在这个问题中指定的错误的扫描仪没有找到在指定文件路径的文件的结果。该是的ArrayIndexOutOfBounds表示正是异常状态。被访问的索引是所述阵列的边界(大小)的外部。

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

© www.soinside.com 2019 - 2024. All rights reserved.