【问题标题】:How do you continue your program even if an exception occurs?即使发生异常,您如何继续您的程序?
【发布时间】:2014-03-28 15:02:54
【问题描述】:

在我的程序中,我必须不断访问硬盘驱动器数千次才能查看图像(无法绕过它),有时我的程序会因为“找不到文件 IO 异常”而被绊倒,这很可能是因为我进行了许多修改正在制作图像并快速重新保存。即使发生此错误,我如何继续我的程序,因为目前它会导致我的程序停止?

代码:

filepattern=imageLocation+temp+"image.jpg";
File outputfile = new File(filepattern);

BufferedImage img = null;
try {
    img = ImageIO.read(outputfile);
} catch (IOException e) {
}                 

注意:我已通过确保文件首先存在来解决此问题。感谢您的所有帮助!

【问题讨论】:

  • 取决于您如何处理异常。发布代码将帮助我们给出有意义的答案。
  • 发布一些代码来显示您的问题。
  • 当异常被捕获时会发生什么(除了默默地扫除异常并留下一个空的img)?
  • 我在api中看不到这个构造函数new File(outputfile)
  • 我不太确定。所以基本上,我不断地在网上拍摄一张变化的图片,然后我删除一部分图片并重新保存,然后阅读图片并分析图片。但是,有时读取图片时会出现错误,正如我解释的那样,它会停止拍照。

标签: java exception-handling


【解决方案1】:

捕获异常并根据需要进行处理。

try {

// your code

} catch (<Expected exception> e) {
// handle the exception
}

【讨论】:

  • 默默吞下异常是一个非常糟糕的主意。
  • 我理解“吃”的意思是“处理”,但如果你将print if needed 更改为handle the exception,可能更激进的反对者会撤回。
  • 我只是好奇,这和普通的catch异常有什么区别?
  • @user3341249:没什么。这几乎就是您现在在问题中发布的内容。
  • @user3341249 你是在异常之后再次调用代码吗?发布一些更详细的代码,例如调用它的位置。
【解决方案2】:

trycatch包围声明。

这将阻止代码崩溃,您可以在 catch 块中编写代码来处理故障。

【讨论】:

  • 是的,我这样做了,但是当错误发生时它会继续冻结。
  • @user3341249:那么您将不得不向我们提供有关您尝试过的更多信息(例如实际代码)。
  • 基本上它会尝试读取一个不存在的文件,因为它仍在从以前​​的方法中保存。它抛出一个 IO 异常,因为文件不存在,然后它停止做它应该做的事情。
【解决方案3】:

有3个关键词 尝试 {} 执行可能导致问题的块 捕捉(异常前){} 执行代码来处理特定的异常。您可以处理特定的异常类型,而不是 Exception 最后 {} 执行清理代码。即使发生异常并中断了try块中的执行流程,这段代码也会一直执行。

【讨论】:

    【解决方案4】:

    您可以尝试类似下面的片段。当然,您需要将实际读取封装在 try / catch / finally 块中,以确保关闭文件

    try {
        filesTried++;
        [you code]
    } catch (IOException e) {
        fileErrors++;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      相关资源
      最近更新 更多