I / O错误异常处理:IOException的无法访问的catch块。永远不会从try语句主体抛出此异常

时间:2014-01-05 03:16:48

标签: java command-line error-handling io arguments

我正在为学校开设一项作业(Java)。在说明/标题中,我被告知我需要对命令行参数和其他东西使用I / O异常处理。

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

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

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

“IOException的无法访问的catch块。此异常永远不会从try语句主体中抛出”

我从Eclipse获得的快速修复建议:
1.删​​除Catch子句 2.用关闭

替换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;
    }
}

我的问题是:

  1. 如果是的话,我做错了什么?
  2. 此要求是否不可能/要求错误使用I / O错误异常处理?
  3. 非常感谢任何帮助。 谢谢, 玷污

2 个答案:

答案 0 :(得分:2)

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

firstArg = args[0];
secondArg = args[1];

因此,不需要捕获IOException。如果用户没有提供2个参数,则可能捕获的异常可能是ArrayIndexOutOfBoundsException。

当您与外部源(例如通过套接字)通信或从文件读取并且某些输入读取错误时,有时会抛出IOException。但是确定args数组中的内容不会引发IOException。

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

答案 1 :(得分:2)

之所以说这是因为try块内部没有任何可能抛出IOException的操作。换句话说,你无法从你的try块里面获得IOException。您可以尝试捕获ArrayIndexOutOfBoundsException,因为这可能会发生,在这种情况下也会删除不再需要的if(args.length> 0),因为您将捕获该错误并进行处理。希望这会有所帮助。