Java未报告的异常

在学习Java时,我经常会偶然发现此错误。它是这样的:


未报告的异常java.io.FileNotFound异常;必须被抓住或宣布被抛出。


java.io.FileNotFound只是一个例子,我见过很多不同的例子。在这种情况下,导致错误的代码是:


OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("myfile.pdf")));

一旦将语句放入try / catch块中,错误总是消失并且代码编译并成功运行。有时候对我来说已经足够了,但有时却不行。


首先,我从中学习的示例并不总是使用try / catch,但是显然应该可以使用。


更重要的是,有时当我将整个代码放入try / catch中时,它根本无法工作。例如在这种情况下,我需要out.close(); 在finally {}区块中;但如果上述本身的语句是内部试{} ,最后{}犯规“看” 出来,因此不能关闭它。


我的第一个想法是导入java.io.FileNotFound; 或其他相关异常,但没有帮助。


德玛西亚99
浏览 416回答 3
3回答

开满天机

您所指的是检查异常,这意味着必须声明或处理它们。用Java处理文件的标准结构如下所示:InputStream in = null;try {  in = new InputStream(...);  // do stuff} catch (IOException e) {  // do whatever} finally {  if (in != null) {    try {      in.close();    } catch (Exception e) {    }  }}丑吗?当然。冗长吗?当然。Java 7将通过ARM块使它更好一点,但是直到那时,您仍然只能使用上面的代码。您还可以让调用方处理异常:public void doStuff() throws IOException {  InputStream in = new InputStream(...);  // do stuff  in.close();}尽管即使这样,也close()应该将其包装成一个finally块。但是上面的函数声明说,此方法可以抛出IOException。由于这是一个已检查的异常,此函数的调用者将需要catch它(或声明它,以便其调用者可以处理它,依此类推)。

慕盖茨4494581

如果将获取文件放入中try,finally即使获取失败也将运行发布部分(),这是错误的。/现在,您可以尝试一些代码来检查获取是否成功,然后再运行发行版。但是经验表明,这种方法通常编写不正确(并且显然未经测试),因此您不妨使用更简单的代码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java