在java的方法中,如果想要抛出一个异常,那么就要在方法签名中加入throw Exception.但是在下边的方法中,虽然在方法签名中没有加入throw Excetion, 但是在显式的throw e的时候,依然能够抛出,这是为什么呢?
public void addReconciliation(ReconciliationBatch reconciliationBatch, List<ReconciliationDetail> list) {
Map<String, Object> paramMap = new HashMap<>();
try {
paramMap.put("PI_RECONCILIATION_DATE", reconciliationBatch.getReconciliationDate());
paramMap.put("PI_FILE_NAME", reconciliationBatch.getFileName());
paramMap.put("PI_FILE_UUID", reconciliationBatch.getFileUUID());
paramMap.put("PI_CHANNEL", reconciliationBatch.getDdmeChannelId());
paramMap.put("PI_TOTAL_AMOUNT", reconciliationBatch.getReconciliationAmount());
paramMap.put("PI_LOCAL_AMOUNT", reconciliationBatch.getLocalAmount());
paramMap.put("PI_AMOUNT_GAP", reconciliationBatch.getAmountGap());
paramMap.put("PI_OPERATOR", reconciliationBatch.getCreator());
paramMap.put("PI_COMMENTS", reconciliationBatch.getComments());
paramMap.put("PI_HAS_ERROR", reconciliationBatch.getHasError());
paramMap.put("PO_MSG", "");
paramMap.put("PI_TAB_RECONCILIATION", list);
this.reconciliationMapper.insertReconciliation(paramMap);
} catch (Exception e) {
logger.error("addReconciliation(), happen error, ex= ", e.getMessage(), e);
throw e;
}
}
public void addReconciliation(ReconciliationBatch reconciliationBatch, List<ReconciliationDetail> list) {
Map<String, Object> paramMap = new HashMap<>();
try {
paramMap.put("PI_RECONCILIATION_DATE", reconciliationBatch.getReconciliationDate());
paramMap.put("PI_FILE_NAME", reconciliationBatch.getFileName());
paramMap.put("PI_FILE_UUID", reconciliationBatch.getFileUUID());
paramMap.put("PI_CHANNEL", reconciliationBatch.getDdmeChannelId());
paramMap.put("PI_TOTAL_AMOUNT", reconciliationBatch.getReconciliationAmount());
paramMap.put("PI_LOCAL_AMOUNT", reconciliationBatch.getLocalAmount());
paramMap.put("PI_AMOUNT_GAP", reconciliationBatch.getAmountGap());
paramMap.put("PI_OPERATOR", reconciliationBatch.getCreator());
paramMap.put("PI_COMMENTS", reconciliationBatch.getComments());
paramMap.put("PI_HAS_ERROR", reconciliationBatch.getHasError());
paramMap.put("PO_MSG", "");
paramMap.put("PI_TAB_RECONCILIATION", list);
this.reconciliationMapper.insertReconciliation(paramMap);
} catch (Exception e) {
logger.error("addReconciliation(), happen error, ex= ", e.getMessage(), e);
throw e;
}
}
catch是方法内抓取异常,然后处理,处理的方法,也包含往上抛 ;声明抛出某种异常的作用是:提醒方法的使用者,此方法会抛出某种异常,你要么捕获它,要么将它重新抛出 ;
catch (Exception e) 的作用是:只要此方法有Exception或其子类异常 都会捕获 并不代表此方法有Exception异常