例外かくとき
try {
 //処理
} catch(FirstException e){
 e.printStackTrace();
 throw new FirstException(e);
} catch(SecondException e){
 e.printStackTrace();
 throw new SecondException(e);
} catch(Exception e){
 e.printStackTrace();
 throw new Exception(e);
} とすべきか
try {
 //処理
} catch(FirstException e){
 e.printStackTrace();
} catch(SecondException e){
 e.printStackTrace();
} catch(Exception e){
 e.printStackTrace();
} とすべきか
try {
 //処理
} catch(FirstException e){
 throw new FirstException(e);
} catch(SecondException e){
 throw new SecondException(e);
} catch(Exception e){
 throw new Exception(e);
} とすべきかで迷う