一、NullPointerException
空指针异常,常见于:
- 入参。从客户端传来的参数,在未进行校验的情况下传入方法当中,其本身为null或其为对象时某些属性为null,进入方法后参与了方法的运行,导致程序出错。
- Sql语句返回值。从sql语句中返回的值,有null的可能性,当作参数传入方法时容易造成空指针异常。
解决方法:在传参时,第一时间对参数本身和参数的某些不能为空的属性进行校验,从Sql语句中返回的值,也要第一时间进行判空。
二、ArrayIndexOutOfBoundsException
数组下标越界异常,常见于取数组值时,输入的下标超过了数组的长度
解决方法:首先对数组进行判断,非空的情况下再判断下标是否在数组的长度范围内
三、IllegalArgumentException
非法参数异常,常见于传入了类型不一致的参数
解决方法:在传参之前确定方法所需的类型和传入的参数一致,倘若不确定,需及时抛出异常,标明具体非法参数
四、NumberFormatException
数字转换异常,常见于将字符串转换为数字时抛出
解决方法:在转换之前使用NumberUtils.isCreatable()进行判断是否可以转为数字
五、SQLException
SQL语句异常,常见于SQL语句执行时抛出
解决方法:确保sql语句的正确性,传入参数的正确性,使用@Param对传参进行绑定,避免混乱
六、NoSuchBeanDefinitionException
Spring容器找不到指定的Bean异常,常见于启动项目时注入或获取某个Bean,但Bean未找到时抛出
原因可能是:
- 忘记加上注解,如@Component、@Service、@Bean、@Controller
- Bean所在位置超出Spring组件扫描的范围,Spring扫描范围在主应用类所在包及其子包
解决方法:
- @ComponentScan(basePackages = "com.bbb.mycomponent")
- 在@SpringBootApplication( scanBasePackages = {"com.aaa.package"} )中添加路径
七、ClassNotFoundException
类未找到异常,类路径中找不到指定的类
解决方法:确保依赖导入正确
八、FileNotFoundException
文件找不到异常,未能找到指定路径的文件
解决方法:确保文件和路径正确及存在
九、NoUniqueBeanDefinitionException
Bean不唯一异常,常见于有多个重名的Bean,在创建时会抛出异常
解决方法:
- 在使用Bean时使用@Qualifier指定具体的Bean
- 在创建Bean时使用@Bean(name = )来为Bean取别名
十、BindingException
绑定异常,常见于将参数与Java对象绑定时,主要原因有
- 请求参数的名称与目标对象的属性名称不匹配
- 数据类型不匹配
- 缺少必需的请求参数
- 对象属性未设置 getter 和 setter 方法
解决方法:
- 在Controller层使用@RequestParam进行绑定
- 使用@RequestParam、@RequestBody、@PathVariable等合适的方法进行绑定
- 在使用@RequestParam等注解时,使用required = true来强制需求
- 使用lombok的@Data给对象赋予get和set方法