在讲解RuntimeException之前先看一段程序。
public class TestDemo {
public static void main(String[] args) {
String str="100";
int num=Integer.parseInt(str);
System.out.println(num*2);
}
}200
于是来观察下Integer类中关于parseInt()方法的定义:
public static int parseInt(String s) throws NumberFormatException
这个方法上已经明确的抛出了一个异常,但是在进行调用的时候发现即使没有进行异常处理,
也可以正常执行。这个就属于RuntimeException的范畴了,来观察NumberFormatException的继承结构
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.lang.RuntimeException
-
- java.lang.IllegalArgumentException
-
- java.lang.NumberFormatException
很多的代码上都可能出现异常,例如:数学计算10/0都可能会产生异常,如果所有有可能产生异常的地方都要求你进行强制性的异常处理,这个代码就太复杂了。所以在异常设计的时候考虑到一些异常可能是简单的问题,所以将这类的异常统一称为RuntimeException,也就是说使用RuntimeException定义的异常类可以不需要强制性进行异常处理。
面试题:请解释Exception与RuntimeException的区别?请列举出几个常见的RuntimeException
1·Exception是RuntimeException的父类,使用Exception定义的异常都要求必须使用异常处理
·RuntimeExcepiton可以由用户选择性的来进行异常处理。
2.常见的RuntimeExcepiton有
|-ArithmeticException
|-CalssCastException
|-NullPointerException