关于一些异常整理

本文详细解析了常见的Java异常,如NullPointerException、TooManyResultException等,探讨其原因与避免策略,涵盖字符串处理、数据库操作及ORM框架使用中的注意事项。
摘要由CSDN通过智能技术生成

关于一些异常整理

NullPointerException

原因:

  • 字符串变量未初始化
  • 接口类型的对象没有用具体的类初始化
  • 对象的值为空时,没有判断为空的情况

避免:

  • 从已知的非空String的对象中调用equals()方法
  • 当valueOf()和toString()返回相同结果时,选择valueOf()
  • 使用null安全的方法和库
  • 避免从方法中返回空指针,而是返回空collection或空数组
  • 使用 annotation 和@NotNull 和 Nullable
  • 避免代码中不必要的自动装包和自动解包
  • 遵从 contract 并定义合理默认值
  • 定义数据库中字段是否可为空
  • 使用空对象模式

TooManyResultException

两种情况:

  • 查询一条数据,返回多条
  • 查询多条数据,前台查询限制一条
    1. SQL语句:mapper.mxl中
    2. mybatis的返回值:注意 resultType 和 resultMap
    3. 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包
  • 查看加载驱动参数是否正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值