springboot-统一返回数据,统一异常处理,自定义异常
代码下载:
https://github.com/2010yhh/springBoot-demos.git
环境
idea2018,jdk1.8,
springboot版本:1.5.9.RELEASE
1.java异常
Java 提供了两类主要的异常 :runtime exception(预期异常和运行时异常) 和 checked exception (预期异常)
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run() 抛出 ,如果是单线程就被 main() 抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。
场景:一般像ssm这种遇到未捕获的异常,不能影响其他的操作,必须处理;
但是:有些场景要求
1.1常见的几种异常
输入输出异常:IOException
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException操作数据库异常:SQLException
文件未找到异常:FileNotFoundException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
字符串转换为数字异常:NumberFormatException
方法未找到异常:NoSuchMethodException
1.2异常的处理
try catch是直接处理,处理完成之后程序继续往下执行,
throw则是将异常抛给它的上一级处理,程序便不往下执行了使用throws继续向上抛出异常
ry catch一般在最上层使用,底层的都使用throws向上抛出。如果即在最上层做try catch,又在底层方法做try catch,程序
会变的很混乱。一般可预见的错误,比如空指针,你完全可以在最上层比如controller层进行判断下,不要让null进入底层方法引起不必要的麻烦,
你也省的给底层和上层方法都加预防空指针异常的判断。
ssm开发中通常:抛出异常后,前端跳转到某个页面或者根据返回的状态码,给出提示操作或者根据状态码做跳转页面
dao层一个抛给service层,service层再抛给Controller层,Controller层catch记录错误信息,
同时controller层返回给前端状态码和错误信息,前端根据状态码做处理:根据状态码显示不同信息,同时将异常作为提示信息显示在前端。
或者:
系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理
1.3统一返回值
public class ResultUtil {
public static Result success() {
return success(null);
}
public static Result success(Object object) {
Result result = new Result();
result.setCode(ResultCode.SUCCESS);
result.setMsg("成功");
result.setData(object);
return result;
}
public static Result success(Integer code,Object object) {
Result result = new Result();
result.setCode(code);
result.setMsg("成功");
result.setData(object);
return result;
}
public static Result error( String msg) {
Result result = new Result();
result.setCode(ResultCode.ERROR);
result.setMsg(msg);
return result;
}
public static Result error(Integer code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/18393.html