我目前正在为学校做一项作业 (Java)。在说明/标题中,我被告知需要对命令行参数和其他内容使用 I/O 异常处理。
**程序需要做什么:**
运行时采用两个命令行参数,否则抛出错误。 该标题包括以下要求:“如果没有命令参数,则完成 I/O 错误处理”
问题是,每次我尝试使用 I/O 异常捕获时,我都会收到此错误:
“无法访问 IOException 的 catch block 。该异常永远不会从 try 语句主体中抛出”
我从 Eclipse 得到的快速修复建议:
1.删除Catch子句
2. 将 Catch 子句替换为 close
这是我的代码:
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 错误异常处理?
非常感谢任何帮助。 谢谢, 苏利
最佳答案
我认为问题是Java永远不会在代码中抛出IOException
firstArg = args[0];
secondArg = args[1];
因此,无需捕获 IOException。如果用户没有提供 2 个参数,您可能捕获的异常可能是 ArrayIndexOutOfBoundsException。
当您与外部源通信(例如通过套接字)或从文件读取并且某些输入读取出错时,有时会引发 IOException。但确定 args 数组中的内容不会引发 IOException。
我不太清楚为什么你的老师指定了 I/O 异常。他指的是一般的输入输出还是 Java IOException?
关于java - I/O 错误异常处理 : Unreachable catch block for IOException. try 语句主体永远不会抛出此异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929621/