关于一些异常整理
NullPointerException
原因:
- 字符串变量未初始化
- 接口类型的对象没有用具体的类初始化
- 对象的值为空时,没有判断为空的情况
避免:
- 从已知的非空String的对象中调用equals()方法
- 当valueOf()和toString()返回相同结果时,选择valueOf()
- 使用null安全的方法和库
- 避免从方法中返回空指针,而是返回空collection或空数组
- 使用 annotation 和@NotNull 和 Nullable
- 避免代码中不必要的自动装包和自动解包
- 遵从 contract 并定义合理默认值
- 定义数据库中字段是否可为空
- 使用空对象模式
TooManyResultException
两种情况:
- 查询一条数据,返回多条
- 查询多条数据,前台查询限制一条
- SQL语句:mapper.mxl中
- mybatis的返回值:注意 resultType 和 resultMap
- dao 层接口与 mybatis 中返回值、接收值要一致
PersisteceException
SQLSyntaxErrorException
通过异常堆、栈信息 定位错误行 ,定位到stm.executeXX(sql)
- ORA-00904: “column” 标识符无效
- ORA-00911: 无效字符:sql的语法出现问题:常见问题:sql中多了个分号
- ORA-01722: 无效数字
- ORA-00904: “UUID” 标识符无效
- ORA-00917: 缺失逗号
- ORA-0942: 表或视图不存在
- ORA-0923: 未找到要求的From 的关键字
- ORA-00947: 没有足够的值
BindingException
- Dao 接口和 mapper.xml 文件中方法名不一致
JasperException
- PropertyNotException:‘property’ pressDate not Found on type 实体类:jsp 页面传参错误
- An exception occurred processing JSP page/Index jsp at line ······ >>> root cause:com.bjsxt······
ReflectionException
There is not getter for property in 实体类:表中带有下划线的字段在实体类中采用驼峰命名法,在mapper.xml文件中要注意应写表中字段还是类中属性
ClassNotFoundException
原因:
- oracle.jdbc.OracleDriver没有被加载到JVM中,
- 没有导入JDBC的驱动jar包,
- 加载驱动的参数写错
解决
- 查看项目中是否导入JDBC的驱动jar包
- 查看加载驱动参数是否正确。