JAVA中的异常

一 异常的分类

在这里插入图片描述
这是从jdk AP里简单摘出来,java中关于Exception和ERROR的一个关系,
可以看出他们都来自于同一个父类Throwable
Error:java中的Error是比较严重的问题,非程序本身的问题,一般都是虚拟机相关的异常,如OOM,StackOverflow,如果大家接触过JVM调优不会陌生。
Exception:细分RuntimeException和其他,为什么有这么细分呢,其实跟后面的异常处理是有关系的,RuntimeException和其子类都是不可查异常(unchecked Exception),编译时不会对其进行检查,只有在运行时才会进行检查和处理。而另外一类异常,即可查异常(checked Exception),这些异常需要在编译阶段必须进行处理的,所有的非RuntimeException都属于可查异常(checkedException),如IOException。

二 异常的处理

2.1 try,catch,final

在这里插入图片描述
这个应该是最常见的,处理异常的方式,try代码块中是被监控的可能会产生异常的,catch中是对异常的处理,可以包括多个catch,注意catch中的异常,一定是先catch子类,再catch父类,finally是不管是否发生异常都会执行的。这样说不是特别准确,特别面试的时候面试官经常会问,finally的代码一定会执行嘛,什么情况下不会执行。
finally代码块不执行的几种情况:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU

2.2throw和throws

throws是在方法声明时抛出一些自己处理不了的异常,或者调用者发现被调用的方法声明有Throws异常,可以继续上抛,如果所有上层的方法都不能处理,则最终会被JVM处理,处理的方法也很简单,就是打印出异常信息。
throw是在方法中,一般是在catch到异常时,抛出一些自定义的异常,后面用于问题定位。

2.3异常处理的原则

1)异常处理主要就是两点,一是抛出异常(throw,throws),二是捕获异常(try,catch,finally)。
2)分可检查异常(checked Exception)和非可查异常(unckecked Exception)。
3)如果是可查异常,不处理,是编译不通过的,两种处理方式,一种是try,catch,finally。第二种就是在方法生命是显示的抛出。
4)如果是非可查异常,不显示的throws是可以编译通过,这就需要我们平时编码的时候,注意代码可能会产生的非可查异常,可以进行trycatch,打印异常信息,或者包装成自定义的异常。
5)对应一些处理不了的异常,一定要继续上抛,而不是自己吞掉,不然后面定位问题很痛苦。

三 常见异常

说明异常名称
算数异常类ArithmeticExecption
空指针异常类型NullPointerException
类型强制转换类型ClassCastException
数组负下标异常NegativeArrayException
数组下标越界异常ArrayIndexOutOfBoundsException
文件已结束异常EOFException
文件未找到异常FileNotFoundException
字符串转换为数字异常NumberFormatException
操作数据库异常SQLException
输入输出异常IOException
方法未找到异常NoSuchMethodException
下标越界异常IndexOutOfBoundsExecption
系统异常SystemException
创建一个大小为负数的数组错误异常NegativeArraySizeException
数据格式异常NumberFormatException
非法参数异常IllegalArgumentException

参考:深入理解java异常处理机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值