扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
主题结构如下一个服务免不了全局异常处理,下面就简述spring boot中的异常处理情况。
成都创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达十多年累计超上千家客户的网站建设总结了一套系统有效的推广解决方案,现已广泛运用于各行各业的客户,其中包括:成都塔吊租赁等企业,备受客户称誉。
Logger为 org.slf4j:slf4j-api中的类,一个日志记录,看个人是否需要
上图中为一个全局处理异常Exception。由上图可以看出主要使用的为@ControllerAdvice和@ExceptionHandler此两个注解。而对于其余@ResponseBody和@ResponseStatus则更具个人具体情况是否使用。
当然实际情况中异常情况不可能都是Exception,有可能细分做出不同处理。所有
@ExceptionHandler({FileNotFoundException.class})
@ResponseBody
@ResponseStatus(HttpStatus.NOT_FOUND)
public MapfileException(HttpServletResponse servletResponse, FileNotFoundException fileNotFoundException){logger.error(fileNotFoundException.getMessage(),fileNotFoundException);
Mapmap = new HashMap<>();
servletResponse.setStatus(404);
map.put("404",fileNotFoundException.getMessage());
return map;
}
上面代码块中则为对FileNotFoundException 此类异常的处理,可以看出这类异常咱们做出的处理为404,应为异常形式不同,更具具体情况返回对应状态码。此处@ReponseStatus(HttpStatus.NOT_FOUND)点进去可以看出
其状态嘛也是404,相当于我们的servletResponsel.setStatus(404)同一个道理,当然我们这两个都写上了。
同理下面我们对SQLException异常进行捕获处理,传入参数为一个HttpServletResponse,和当前捕获的异常类型,此处参数和@ExceptionHandler里面的对应。然后再进行捕获后的对应处理方式,和返回情况。此处sql异常我们返回的对应状态码为500.为服务器的异常情况。Result为自己定义的返回类型,返回情况可以自己定义。可以String,可以Map等等。
@ExceptionHandler({SQLException.class})
@ResponseBody
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public Result sqlException(HttpServletResponse response, SQLException sqlException){ Result result = new Result();
result.setCode(500);
logger.error(sqlException.getMessage());
return result;
}
当然也可以自定义异常的抛出总结比如有些我们自定义的异常,(随便取个名RRException).然后某处我们throw new RRException这个异常了。同理我们也进行捕获在此处理。
同理将对应@ExceptionHandler({RRException.class})然后参数也换成对应的自定义异常类型。然后进行处理。结果放入HttpServletResponse 中即可。
总体来说主要就是创建个类,在类上使用到@ControllerAdvice,然后在捕获对应异常处理时用上@ExceptionHandler({异常类.class}),然后传入对应异常类参数和HttpServletResponse,对返回结构在处理即可。但程序中抛出这些异常时,就会对应跳到此处对返回结果处理。返回给前端。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流