java - 如何只处理 ClientAbortException?

标签 java tomcat exception

我正在编写一个下载文件 Controller
有时用户会在文件完全写入之前关闭浏览器窗口。 - 这很酷。

问题是我的日志中充满了这个错误:

org.apache.catalina.connector.ClientAbortException: java.io.IOException: An established connection was aborted by the software in your host machine at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:333) at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:758) at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:663) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:368) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:346) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2147) at org.apache.commons.io.IOUtils.copy(IOUtils.java:2102) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2123) at org.apache.commons.io.IOUtils.copy(IOUtils.java:2078)

当我试图只捕获这个特定的错误时,eclipse 说:

ClientAbortException cannot be resolved to a type

我已经正确设置并运行了项目,所以是否可以只捕获这个特定的异常:

   org.apache.catalina.connector.ClientAbortException

我想保留 IOException 以防再次发生灾难。

try catch structure

最佳答案

ClientAbortException派生自 IOException。您必须检查到底是什么异常导致了 IOException e:

...
} catch (FileNotFoundException fnfe) {
    // ... handle FileNotFoundException
} catch (IOException e) {
    String exceptionSimpleName = e.getCause().getClass().getSimpleName();
    if ("ClientAbortException".equals(exceptionSimpleName)) {
        // ... handle ClientAbortException
    } else {
        // ... handle general IOException or another cause
    }
}
return null;

关于java - 如何只处理 ClientAbortException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51993008/

相关文章:

java - 使用帖子的登录表单只能使用一次?找不到错误

java - 使用 tomcat7-maven-plugin 指定要打包的目录

excel - 使用Internet Explorer打开JasperReports Server/Tomcat的文件内容资源(Excel)将内联显示二进制数据

java - RuntimeException - 耗尽结果集 - 怎么会发生?

java - MarkLogic - 来自 Java 的 SPARQL

java - 哪些流操作使用 `CONCURRENT` ,`IMMUTABLE` 和 `NONNULL` Spliterator 特性?

tomcat - 将 Tomcat 配置为服务(无 catalina.bat)

java - struts2 spring项目运行在jetty和tomcat上

android - MediaProjectionManagerService 内部抛出 DeadObjectException

Scala:默默地捕捉所有异常