Skip to content

Exception和RuntimeException的区别

在 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:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

最近更新