我正在为学校开设一项作业(Java)。在说明/标题中,我被告知我需要对命令行参数和其他东西使用I / O异常处理。
**该计划需要做什么:**
运行时接受两个命令行参数,否则抛出错误。 该规则包括以下要求:“如果没有命令参数,则执行I / O错误处理”
问题是,每次我尝试使用I / O异常catch时,都会收到此错误:
“IOException的无法访问的catch块。此异常永远不会从try语句主体中抛出”
我从Eclipse获得的快速修复建议:
1.删除Catch子句
2.用关闭
这是我的代码:
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;
}
}
我的问题是:
非常感谢任何帮助。 谢谢, 玷污
答案 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),因为您将捕获该错误并进行处理。希望这会有所帮助。