java编程异常处理(一)

记录一下编程过程中遇到的一些常见的异常处理,相信以后肯定不止一次的会遇到,希望下次再遇到的时候能够很快的定位解决问题。

1. java.util.IllegalFormatConversionException: d != java.lang.String**

背景:

学习java编程思想 – 13.5.5 Formatter转换,练习13-4遇到错误如下:

JDK API 异常说明:
当与格式说明符对应的参数是不兼容的类型时抛出未检查的异常。

异常代码:

Formatter f = new Formatter(System.out);
//    public static final String FORMATER_TOTAL = "%-15s %5d %10.2f\n";   //错误代码
 public static final String FORMATER_TOTAL = "%-15s %5s %10.2f\n";        //正确代码
 f.format(FORMATER_TOTAL,"Total"," ",total*0.06); //第二个格式化参数应该是String类型(%5s),而不是int整型(%5d)

分析总结:

遇到此错误要检查使用的format方法的格式说明符是否正确,是否和传进去的参数匹配。
ps: “%-15s” 默认的情况下,数据是右对齐的,可以通过加上“-”标志改变对齐方式

2. java.lang.StackOverflowError

背景:

学习java编程思想 – 13.2 重载“+”与StringBuilder

JDK API 异常说明:

当堆栈溢出发生时抛出一个应用程序递归太深。。

异常代码:

 @Override
    public String toString() {
        return "Exercise13_2 address:"+super.toString()+"\n";  //正确代码
        return "Exercise13_2 address:"+this+"\n";                     //错误代码
    }

分析总结:

重载的toString方法中如果使用字符串加this,会造成不断递归调用自身的toString(),从而造成堆栈溢出。
遇到此异常要检查报错的代码行是否存在不断做递归操作。

3. java.lang.NullPointerException: null

背景:

对数据库中取出的数据进行操作时,报了空指针异常。

JDK API 异常说明:

当应用程序尝试在需要对象的情况下使用null时抛出

异常代码:

TDeviceInfo deviceInfo =tDeviceInfoMapper.findByDeviceId(deviceId)
List<TOrder> orders = tOrderMapper.findByDevId(deviceInfo.getId())

修改后的代码:

TDeviceInfo deviceInfo =tDeviceInfoMapper.findByDeviceId(deviceId)
if (deviceInfo != null) {
    List<TOrder> orders = tOrderMapper.findByDevId(deviceInfo.getId())
} else {
    //todo
}

分析总结:

  1. 根据deviceId从数据库中取出deviceInfo,deviceInfo可能为null,如果再对deviceInfo进行getId()操作就会出现空指针异常。
  2. 该异常就是对null对象进行了不合法的操作,大多情况可能就是对null对象调用类实例方法导致的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值