1. 定义异常类
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class HyException extends RuntimeException {
/**
* @descrption 自定义异常类
*/
private static final long serialVersionUID = 1L;
private String errCode;
private String errMsg;
}
2. 自定义异常枚举,此类可以逐步维护
import org.apache.commons.lang3.StringUtils;
/**
*
* 自定义异常枚举,此类可以逐步维护
*
*/
public enum HyEnumExcption {
BIZ_ECPT("9001001","业务执行异常"),
REMOTE_ECPT("9001002","远程方法调用异常"),
TEMPLATE_ECPT("9001003","模板生成异常"),
INPUTFILE_ECPT("9001004","读取文件流异常"),
ENCODE_ECPT("9001005","编码异常"),
DOM4J_ECPT("9001006","XML解析异常"),
CREATE_WEBSERVICE_ECPT("9001007","创建webservice服务异常"),
SOAP_ECPT("9001008","创建SOAP异常"),
FORAMT_URL_ECPT("9001009","创建SOAP异常"),
RUN_ECPT("9002001","运行时异常");
private String errCode;
private String errMsg;
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
private HyEnumExcption(String errCode, String errMsg) {
this.errCode = errCode;
this.errMsg = errMsg;
}
public static HyEnumExcption getByCode(String code) {
if (StringUtils.isBlank(code)) {
return null;
}
for (HyEnumExcption trans : values()) {
if (StringUtils.equals(trans.getErrCode(), code)) {
return trans;
}
}
return null;
}
public static HyEnumExcption getByType(String type) {
if (StringUtils.isBlank(type)) {
return null;
}
for (HyEnumExcption trans : values()) {
if (StringUtils.equals(trans.getErrMsg(), type)) {
return trans;
}
}
return null;
}
public static void main(String[] args) {
System.out.println(HyEnumExcption.getByCode("9001001").getErrMsg());
}
}
3. 抛出异常 (注意,异常 需要细分)
// 1.7 提交订单生效(确认订单)
public boolean confirmOrder(HoptRequest baseReq) {
String rtnMessage = "";
boolean confirm = true;
String inputParams = "";
String flag = HyEnumHoptRtn.FAILED.getStatus();
try {
Map<String, String> content = new HashMap<String, String>();
content.put("requestid", baseReq.getRequestId());
content.put("orderid", baseReq.getOutTradeNo());
content.put("paymentcode", baseReq.getPaymentCode());
inputParams = xmlUtils.genrateMsgFromXml(content,"/XH/confirmOrder.xml");
logger.info(MARK + "confirmOrder请求报文:" + inputParams);
rtnMessage = yyghService.confirmOrder(Base64.encodeBase64String(inputParams.getBytes("UTF-8")));
rtnMessage = new String(Base64.decodeBase64(rtnMessage));
logger.info(MARK + "confirmOrder返回报文:" + rtnMessage);
if(StringUtils.isNotBlank(rtnMessage)){
XStream xstream =new XStream();
xstream.autodetectAnnotations(true);
xstream.ignoreUnknownElements();
xstream.setClassLoader(GreenLineWHResponse.class.getClassLoader());
xstream.alias("response", GreenLineWHResponse.class);
xstream.alias("returnresult", ReturnResult.class);
GreenLineWHResponse resp=(GreenLineWHResponse)xstream.fromXML(rtnMessage);
ReturnResult result =resp.getReturnResult();
checkRtn(result);
flag = HyEnumHoptRtn.SUCCESS.getStatus();
}
} catch (UnsupportedEncodingException e) {
logger.error(">>>>>返回报文解码失败:" + e.getMessage());
throw new HyException(HyEnumExcption.ENCODE_ECPT.getErrCode(),HyEnumExcption.ENCODE_ECPT.getErrMsg());
} catch (IOException e) {
logger.error(">>>>>获取xml模板失败", e.getMessage());
throw new HyException(HyEnumExcption.INPUTFILE_ECPT.getErrCode(),HyEnumExcption.INPUTFILE_ECPT.getErrMsg());
} catch (TemplateException e) {
logger.error(">>>>>生成报文失败", e.getMessage());
throw new HyException(HyEnumExcption.TEMPLATE_ECPT.getErrCode(),HyEnumExcption.TEMPLATE_ECPT.getErrMsg());
}finally{
this.sengMsg(baseReq.getHospitalId(), inputParams, rtnMessage, flag,baseReq.getOrderId(),MARK+"confirmOrder");
}
return confirm;
}
4. controller 层 得到异常信息
@RequestMapping(value = "/getDoctorSchedule")
/** 获取医生的排班信息 **/
// public String getDoctorSchedule(@RequestParam String appid, long nowstp,String hosid, String deptid, String docid, int rowstart,int rowcount, String sign) {
public String getDoctorSchedule(HYRequestVO rVo){
RtnData rtn = new RtnData();
try{
HyHospitalScheduleConfig config=scheduleConfigManager.queryHyHospitalScheduleConfig(Long.valueOf(rVo.getHosid()));
List<HyDoctorSchedule> infos = null;
if(StringUtils.equals(HyEnumHoptType.HY_STATIC.getCode(),config.getType())){
infos = staticService.getHyDoctorSchedules(rVo);
}else{
infos = service.getHyDoctorSchedules(rVo);
}
rtn.setRtnCode(HyEnumRtn.RTN_SUCCESS.getCode());
rtn.setRtnMessage(HyEnumRtn.RTN_SUCCESS.getDescription());
rtn.setData(infos);
}catch(HyException e){
rtn.setRtnCode(e.getErrCode());
rtn.setRtnMessage(e.getErrMsg());
}finally{
//mqClient.sendDynamicRegistrationLoggerMsg(dynamicRegistrationLog);
}
return JSONObject.toJSONString(rtn);
}