今天对RuntimeException相关知识点做总结:
RuntimeException异常:
(1)如果在函数内抛出该异常(含子类异常),函数上可以不用声明,编译一样通过。
(2)如果在函数上声明了该异常(含子类异常),调用者可以不处理,编译一样通过。
(3)之所以不用在函数上声明,是因为不需要让调用者处理,希望程序停止,因为运行时出现了无法继续运算的情况,必须对代码修正才行,所以调用者可以不try不throws
(4)常见的RuntimeException异常:
##以下异常可以不声明,声明了可以不处理
1.ArithmeticException :算术异常
2.IndexOutOfBoundsException:角标越界异常
ArrayIndexOutOfBoundsException: 数组角标越界异常
StringIndexOutOfBoundsException:字符串角标越界异常
3.NullPointException:空指针异常
(5)空指针异常:
class Person
{
public void checkName(String name)
{
name.equals("lisi");//比较两个字符串是否相等
}
}
class NullPointException
{
public static void main(String[] args)
{
Person p = new Person();
p.checkName(null);
}
}
比较两个字符串是否相等:字符串1.equals(字符串2)
##比较两个数值,两个字符,都会提示出现空指针异常
(6)自定义异常时,如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException
## argument 参数;
##注意:面试时会考RuntimeException的方面知识,考抛出了一个运行异常,但没有声明,问你能不能编译通过
回答是可以,因为运行异常是一个特殊的异常,抛出后可以不用声明。
##总结(理解即可):
对于异常分两种:
1.编译时被检测的异常(非运行异常)
函数内抛出了,函数上必须声明;函数上声明了,调用者必须处理。
2.编译时不被检测的异常(运行异常:RuntimeException及其子类)
不用声明的;声明了也不用处理。
总结了一大堆东西,感觉好啰嗦,我想说的是:学完这个知识点以后觉得思绪很混乱,没办法理清思绪。
如果很好的去理解RuntimeException?这个知识点的重点到底在哪里?
|