如何处理文件关闭抛出的异常?
How to deal with an exception thrown by file close?
我正在使用 Apache PDFBox 阅读一些 PDF 文件。完成 PDF 后,我需要发布 PDF 文档。为此,我调用了抛出异常的 close() 方法。该程序还允许编辑 PDF,在这种情况下可能会抛出异常,但我的程序只是关闭它们,这不应该出错。在这种情况下,是否可以只捕获异常并将 catch 块留空,或者是否有更好的处理方法?
例如:
try {
pdf.close();
catch {
//empty
}
当流关闭抛出异常时忽略它是否可以接受?
在大多数情况下是这样,但这实际上取决于上下文。如果您决定不处理关闭异常并希望避免额外的 try-catch 块,那么您可以使用 commons-io
库中的 IOUtils
。
finally {
IOUtils.closeQuietly(pdf);
}
这相当于下面的
finally {
try {
if (closeable != null) {
closeable.close();
}
} catch (IOException ioe) {
// ignore
}
}
try {
//code to catch
} catch (IOException ex) {//specific catch
ex.printStackTrace();
} catch (Exception e) {//Catch errors lazily, This will catch any exception within the try that is rooted from the Exception class.
e.printStackTrace();
}
有更多正确的方法可以做到这一点,但这是一种简单的方法。你真的只需要一个 catch 子句,你可以有多个 catch。 Google "how to use Try/catch/finally in java" 你应该想出一些好东西。
祝你好运!
我正在使用 Apache PDFBox 阅读一些 PDF 文件。完成 PDF 后,我需要发布 PDF 文档。为此,我调用了抛出异常的 close() 方法。该程序还允许编辑 PDF,在这种情况下可能会抛出异常,但我的程序只是关闭它们,这不应该出错。在这种情况下,是否可以只捕获异常并将 catch 块留空,或者是否有更好的处理方法?
例如:
try {
pdf.close();
catch {
//empty
}
当流关闭抛出异常时忽略它是否可以接受?
在大多数情况下是这样,但这实际上取决于上下文。如果您决定不处理关闭异常并希望避免额外的 try-catch 块,那么您可以使用 commons-io
库中的 IOUtils
。
finally {
IOUtils.closeQuietly(pdf);
}
这相当于下面的
finally {
try {
if (closeable != null) {
closeable.close();
}
} catch (IOException ioe) {
// ignore
}
}
try {
//code to catch
} catch (IOException ex) {//specific catch
ex.printStackTrace();
} catch (Exception e) {//Catch errors lazily, This will catch any exception within the try that is rooted from the Exception class.
e.printStackTrace();
}
有更多正确的方法可以做到这一点,但这是一种简单的方法。你真的只需要一个 catch 子句,你可以有多个 catch。 Google "how to use Try/catch/finally in java" 你应该想出一些好东西。
祝你好运!