【发布时间】:2017-11-14 08:16:47
【问题描述】:
我使用了带有多个异常的 catch 块,在未混淆的构建中运行良好,但在混淆构建中没有捕获异常。
我正在使用 proguard-maven-plugin
try {
...
} catch (ServletException | IOException e){
...
}
我需要为此添加任何 proguard 规则吗?
因为它工作正常当我将代码编写为
try {
...
} catch (ServletException e) {
...
} catch (IOException e) {
...
}
【问题讨论】:
-
Proguard 不应该对此产生影响。也许它是由一些无关的东西引起的。您确定您要比较的两个版本仅在使用和未使用 proguard 方面有所不同吗?另外,如果你有两个用于单个异常类型的 catch 块,这有什么区别吗?
-
是的,两个版本比较只是在 proguard 上有所不同。当我为单个异常编写两个 catch 块时,它工作正常。
-
你试过添加 -keepattributes 例外吗?文档说“指定方法可能抛出的异常。编译器可以使用此信息来强制捕获它们。”
-
是的,我添加了 -keepattributes 例外
-
显然是open bug on Proguard。您可能需要添加对该错误的评论,以便向团队提供您的反馈。
标签: java try-catch proguard obfuscation