2017-11-14 11 views
5

Ich habe catch-Block mit mehreren Ausnahmen verwendet, die in unbeeinträchtigten Build gut funktioniert, aber keine Ausnahme in verschleierten Build abfangen.Catch mit mehreren Ausnahmen nicht abfangen von Ausnahmen in verschleierten Build

I proguard-Maven-Plugin

try { 
    ... 
} catch (ServletException | IOException e){ 
    ... 
} 

Gibt es eine proguard Regel i für diese hinzufügen müssen verwende?

Wegen seiner Arbeits gut, wenn ich meinen Code schreiben, wie

try { 
    ... 
} catch (ServletException e) { 
    ... 
} catch (IOException e) { 
    ... 
} 
+0

Proguard sollte keinen Einfluss darauf haben. Vielleicht liegt es an etwas, das nichts miteinander zu tun hat. Sind Sie sicher, dass sich die beiden Builds, die Sie vergleichen, nur im Progard-Sein unterscheiden und nicht verwendet werden? Macht es auch einen Unterschied, wenn Sie jeweils zwei Catch-Blöcke für einen einzelnen Ausnahmetyp haben? – michalsrb

+0

Ja, zwei Builds unterscheiden sich nur in Progress. Und es funktioniert gut, wenn ich zwei catch-Blöcke für einzelne Ausnahme schreiben. – Gaurav

+0

Haben Sie versucht, -keepattributes Exceptions hinzuzufügen? Die Dokumentation besagt, dass "die Ausnahmen angegeben sind, die eine Methode auslösen kann. Compiler können diese Informationen verwenden, um das Abfangen zu erzwingen." –

Antwort

0

Multi cab Fang Ausnahme verwendet werden, wenn es Chancen von Ausnahmen ohne jede Beziehung (Eltern-Kind), so etwas wie IOException und ArithmeticException und NullPointerException Anhebung . Aber Sie können nicht multi-catch-Block mit der Ausnahme wie IOException und FileNotFoundException verwenden, weil IOException das übergeordnete Element von FileNotFoundException ist.

Multi-Catch-Block ist in Java7 nur für den Komfort des Programmierers gegeben. Es hat keinen Einfluss auf die Ausführungszeit.

+0

Bitte lesen Sie die Frage noch einmal über Proguard und Obfuscation – Gaurav