java - Managing duplicate code in multiple catch blocks
本问题已经有最佳答案,请猛点这里访问。
我有以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | try { // code } catch (Exception1 e1) { if (condition) { //code } else { throw e1; } } catch (Exception2 e2) { if (condition) { //code } else { throw e2; } } |
如何使用私有方法模块化两个捕获中的if-else块。
更具体地说,如果我使用一个方法,如何将不同的异常传递给该方法并适当地抛出它们?
我跟踪了这个链接,但不理解如何传递和抛出正确的异常。
如果使用Java 7,则可以使用新的管道语法:
1 2 3 4 5 6 7 8 | catch (Exception1|Exception2 e) { if(condition) { //code } else { throw e; } } |
这就像将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
有多种方法,一种简单的方法是将方法定义为:
1 2 3 4 5 6 7 |
那就在你抓到的时候叫它
1 2 3 4 5 6 7 | try { // code } catch (Exception1 e1) { method(e1); } catch (Exception2 e2) { method(e2); } |
你唯一要确保在回答人帖子中做的事情就是你需要把exception1放在exception2的超类中,否则不会编译。下面的Java 7答案是最好的处理方法,并按我解释的顺序处理。
Java 7中的更改列表
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html