2017-11-14 19 views
5

Tôi đã sử dụng khối catch với nhiều ngoại lệ, Đó là làm việc tốt trong xây dựng unobfuscated, Nhưng không bắt ngoại lệ trong xây dựng obfuscated.Bắt với nhiều ngoại lệ không bắt ngoại lệ trong xây dựng obfuscated

Tôi đang sử dụng Proguard-maven-plugin

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

Có bất kỳ quy tắc Proguard tôi cần phải thêm cho điều này?

Bởi vì mỹ làm việc của nó Khi tôi viết mã của tôi như

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

Proguard sẽ không ảnh hưởng đến điều này. Có lẽ nó được gây ra bởi một cái gì đó không liên quan. Bạn có chắc chắn rằng hai bản dựng bạn đang so sánh chỉ khác nhau trong proguard đang và không được sử dụng? Ngoài ra, nó có tạo sự khác biệt nếu bạn có hai khối catch cho mỗi loại ngoại lệ không? – michalsrb

+0

Có, hai bản dựng được so sánh chỉ khác nhau ở proguard. Và nó hoạt động tốt khi tôi viết hai khối catch cho mỗi ngoại lệ duy nhất. – Gaurav

+0

Bạn đã thử thêm ngoại lệ -keepattributes chưa? Các tài liệu nói rằng "Chỉ định các ngoại lệ mà một phương thức có thể ném. Trình biên dịch có thể sử dụng thông tin này để bắt buộc chúng." –

Trả lời

0

đa bắt ngoại lệ taxi được sử dụng khi có cơ hội nâng cao ngoại lệ mà không cần bất kỳ mối quan hệ (cha-con), một cái gì đó giống như IOExceptionArithmeticExceptionNullPointerException . Nhưng bạn không thể sử dụng khối đa catch với ngoại lệ như IOExceptionFileNotFoundExceptionIOException là phụ huynh của FileNotFoundException.

Nhiều khối catch được đưa ra trong java7 chỉ để thuận tiện cho lập trình viên. Nó không ảnh hưởng đến thời gian thực hiện.

+0

Vui lòng đọc câu hỏi một lần nữa về proguard và Obfuscation – Gaurav