fzy-blog

Exception和RuntimeException的区别

2019-05-24

在 java 的异常类体系中,Error 和 RuntimeException 是非检查型异常,其他的都是检查型异常。

所有方法都可以在不声明 throws 的情况下抛出 RuntimeException 及其子类
不可以在不声明的情况下抛出非 RuntimeException
简单的说,非 RuntimeException 要自己写 catch 块处理掉。

Exception:在程序中必须使用 try…catch 进行处理。
RuntimeException:可以不使用 try…catch 进行处理,但是如果有异常产生,则异常将由 JVM 进行处理。

常见的 RuntimeException

RuntimeException 是开发中最容易遇到的,下面列举一下常见的 RuntimeException:

1、NullPointerException:见的最多了,其实很简单,一般都是在 null 对象上调用方法了。

2、NumberFormatException:继承 IllegalArgumentException,字符串转换为数字时出现。比如 int i= Integer.parseInt(“ab3”);

3、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];

4、StringIndexOutOfBoundsException:字符串越界。比如 String s=”hello”; char c=s.chatAt(6);

5、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;

6、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。

7、ArithmeticException:算术错误,典型的就是 0 作为除数的时候。

8、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章