这个问题是我面试的时候遇到的一个题目, 较真的说题目不对。应该是RuntimeException和非RuntimeException的区别。
因为Exception是RuntimeException的父类。如果是非RuntimeException,如果在定义方法的时候抛出异常,在调用该方法
的地方必须使用try{}catch{}来捕获异常。但是对于RuntimeException来说不需要。jvm会对该异常进行处理,但是会中断程序
运行。所以建议也对RuntimeException进行try catch。
如果是自定义异常,应该继承Exception,因为你肯定想自己捕捉进行相应的处理,而不是交给jvm处理。
常见的RuntimeException:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常