首页 > 解决方案 > 当 JVM 中捕获到异常时,如何追踪具有错误 CRC 的损坏 PNG?

问题描述

我的应用程序使用了数百个 PNG,其中一个导致sun.awt.image.PNGImageDecoder$PNGException: crc corruption 堆栈跟踪记录到控制台,但异常被捕获,无论它是什么,图像都会加载。我的代码没有异常,堆栈跟踪无法以任何方式识别 PNG。

我想更换损坏的 PNG,但很难找到。我编写了一个小应用程序来加载每个 png,并且再次记录了异常,但它无法识别是哪一个。所以我想知道为 java.desktop/sun.awt.image.PNGImageDecoder 类编写一个自定义日志处理程序是否是一个好主意,它不仅会记录日志,还会引发错误,这会使我的扫描仪停止工作文件。有没有更好的办法?

sun.awt.image.PNGImageDecoder$PNGException: crc corruption
    at java.desktop/sun.awt.image.PNGImageDecoder.getChunk(PNGImageDecoder.java:718)
    at java.desktop/sun.awt.image.PNGImageDecoder.getData(PNGImageDecoder.java:726)
    at java.desktop/sun.awt.image.PNGImageDecoder.produceImage(PNGImageDecoder.java:253)
    at java.desktop/sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:269)
    at java.desktop/sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:212)
    at java.desktop/sun.awt.image.ImageFetcher.run(ImageFetcher.java:176)

标签: exceptionloggingpngcrccorruption

解决方案


推荐阅读