Java I/O错误异常处理:IOException的捕获块不可访问。决不会从try语句体引发此异常

Java I/O错误异常处理:IOException的捕获块不可访问。决不会从try语句体引发此异常,java,command-line,error-handling,io,arguments,Java,Command Line,Error Handling,Io,Arguments,我目前正在为学校做作业(Java)。在指令/规则中,我被告知我需要对命令行参数和其他东西使用I/O异常处理 **该计划需要做什么:** 运行时接受两个命令行参数,否则抛出错误。 该准则包括以下要求:“如果没有命令参数,则执行I/O错误处理” 问题是,每次尝试使用I/O异常捕获时,我都会收到以下错误: “IOException的不可访问捕获块。此异常从未从try语句体中抛出” 我从Eclipse获得的快速修复建议: 1.删除捕获条款 2.用close替换Catch子句 这是我的代码: import

我目前正在为学校做作业(Java)。在指令/规则中,我被告知我需要对命令行参数和其他东西使用I/O异常处理

**该计划需要做什么:**

运行时接受两个命令行参数,否则抛出错误。 该准则包括以下要求:“如果没有命令参数,则执行I/O错误处理”

问题是,每次尝试使用I/O异常捕获时,我都会收到以下错误:

“IOException的不可访问捕获块。此异常从未从try语句体中抛出”

我从Eclipse获得的快速修复建议:
1.删除捕获条款 2.用close替换Catch子句

这是我的代码:

import java.awt.Robot;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;

public class DecipherText {
    public static void main(String[] args) throws IOException { 
        String firstArg;
        String secondArg;

        if (args.length > 0) {
            try {
                firstArg = args[0];
                secondArg = args[1];
            } catch (IOException e) {
                System.out.println("Usage Error: Not enough Arguments");
                System.out.println(e);
                return;
            }
        }

        String inputFile = args[0];
        String outputFile = args[1];
    }

    public static boolean receiver() { 
        return false;
    }

    public static boolean output() { // Outputs The Final File
        return false;
    }
}
我的问题是:

  • 如果是,我做错了什么
  • 此要求是否不可能/要求错误使用I/O错误异常处理
  • 非常感谢您的帮助。 谢谢
    Sully

    我认为问题在于Java永远不会在代码中抛出IOException

    firstArg = args[0];
    secondArg = args[1];
    
    因此,不需要捕获IOException。如果用户未提供2个参数,则可能捕获的异常可能是ArrayIndexOutOfBoundsException

    IOException有时会在您与外部源通信时引发,例如通过套接字进行通信,或者从文件中读取数据时,某些输入读取出错。但是确定args数组中的内容不会引发IOException


    我不太清楚你的老师为什么指定I/O异常。他是指一般的输入输出还是Java IOException?

    我认为问题在于Java永远不会在代码中抛出IOException

    firstArg = args[0];
    secondArg = args[1];
    
    因此,不需要捕获IOException。如果用户未提供2个参数,则可能捕获的异常可能是ArrayIndexOutOfBoundsException

    IOException有时会在您与外部源通信时引发,例如通过套接字进行通信,或者从文件中读取数据时,某些输入读取出错。但是确定args数组中的内容不会引发IOException


    我不太清楚你的老师为什么指定I/O异常。他指的是一般的输入输出还是Java IOException?

    之所以这样说,是因为try块中没有任何操作可能引发IOException。换句话说,您无法从try块中获取IOException。您可以尝试捕获ArrayIndexOutOfBoundsException,因为这种情况可能会发生。在这种情况下,还可以删除if(args.length>0),因为它不再需要,因为您将捕获并处理该错误。希望这能有所帮助。

    之所以这么说,是因为try块中没有任何可能引发IOException的操作。换句话说,您无法从try块中获取IOException。您可以尝试捕获ArrayIndexOutOfBoundsException,因为这种情况可能会发生。在这种情况下,还可以删除if(args.length>0),因为它不再需要,因为您将捕获并处理该错误。希望这能有所帮助。

    好吧,它在标题上说:“如果没有命令参数,就完成I/O错误处理”。很可能我甚至不需要抛出一个实际的IOException。它还有另一个请求,“如果无法打开文件,则完成I/O错误处理”。我想我只要把ArrayIndex扔出BoundsException就好了。非常感谢,只要我被允许就接受答案。好吧,它在标题上说:“如果没有命令参数,I/O错误处理就完成了”。很可能我甚至不需要抛出一个实际的IOException。它还有另一个请求,“如果无法打开文件,则完成I/O错误处理”。我想我只要把ArrayIndex扔出BoundsException就好了。非常感谢,在我被允许的情况下尽快接受答案。这些参数是你的程序文件名吗?是的,因为我将阅读文本文件和编写文本文件。因此,对于我更新的代码,(ArrayIndexOutOfBoundsException正在使用中),它使用参数“ciphers.txt plain.txt”非常有效,并且运行良好:是 啊我觉得你的老师的意思是,你在读/写文件时需要处理IOException-ciphers.txt plain.txt,我也是根据这些答案得出这个结论的。我只是想确保我没有危及我作业中可能的要点:将参数与程序文件名进行比较?是的,因为我将阅读文本文件和编写文本文件。因此,对于我更新的代码,(ArrayIndexOutOfBoundsException正在使用中),它使用参数“ciphers.txt plain.txt”非常有效,并且运行良好:是 啊我觉得你的老师的意思是,你在读/写文件时需要处理IOException-ciphers.txt plain.txt,我也是根据这些答案得出这个结论的。我只是想确保我不会危及我的任务中可能的分数:一吨。与上面的答案大致相同。非常感谢您的所有意见:)P.S.谢谢您提供的高质量的详细信息哈哈,是的,当我发布时,他们已经在那里了lol。没问题,谢谢!:)非常感谢。与上面的答案大致相同。非常感谢您的所有意见:)P.S.谢谢您提供的高质量的详细信息哈哈,是的,当我发布时,他们已经在那里了lol。没问题,谢谢!:)