RuntimeException
通过之前的分析可以发现只要方法后面带有throws往往都是告诉本用户本方法可能产生的异常是什么,所以这个时候来观察一段代码。
class JavaDemo
{
public static void main(String[] args)
{
int num = Integer.parseInt("123");
System.out.println(num);
}
}
结果:123
打开Integer观察parseInt():
public static int parseInt(String s) throws NumberFormatException
这个方法上明确抛出了一个异常,但是在处理的时候并没有强制性要求处理。观察一下NumberFormatException类的继承结构,也观察数学计算类的继承结构。
ArithmeticException | NumberFormatException |
如果现在所有的程序执行上,只要使用了throws定义的方法都必须要求开发者进行手动处理,那么这个代码的编写过于麻烦,所以在设计的过程之中,考虑到代码编写的方便,所以提供有一个灵活的可选 的异常处理父类"RuntimeException",这个类的异常的子类可以不需要强制性处理。
面试题:请解释RuntimeException与Exception的区别?请列举出常见的RuntimeException
- RuntimeException是Exception的子类;
- RuntimeException标注的异常可以不需要进行 强制性的处理,而Exception异常必须强制性处理;
常见的RuntimeException:
- NumberFormatException
- ClassCastException
- NullPointerException