Java I/O错误异常处理:IOException的捕获块不可访问。决不会从try语句体引发此异常
我目前正在为学校做作业(Java)。在指令/规则中,我被告知我需要对命令行参数和其他东西使用I/O异常处理 **该计划需要做什么:** 运行时接受两个命令行参数,否则抛出错误。 该准则包括以下要求:“如果没有命令参数,则执行I/O错误处理” 问题是,每次尝试使用I/O异常捕获时,我都会收到以下错误: “IOException的不可访问捕获块。此异常从未从try语句体中抛出” 我从Eclipse获得的快速修复建议: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
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;
}
}
我的问题是:
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。没问题,谢谢!:)