1 java.lang.Throwable 下有Exception 和 Error两个子类,我们只解决异常,不解决错误
2 异常分类: 编译时异常和运行时异常。前者必须显式的处理异常。后者可以不显式的处理。
在API的Exception的子类中,除了运行时异常是RuntimeException,除此之外都是编译时异常。
3 常见的运行时异常:
1)ArrayIndexOutOfBoundsException数组下标越界异常
2)ArithmeticException算数异常
3)ClassCastException类型转换异常
4) NullPointerException空指针异常
4 try内的变量类似局部变量,出了try以后,不能被调用。选中代码块,右键surround with,选try catch block,自动添加。
5 若catch中多个异常类型是“并列”关系,上下无所谓
若catch中多个异常类型是“包含”关系,子类必须放在父类上面,否则报错。
6
1)finally可选,若有finally其中的代码一定被执行。如果没有finally,同样的代码可能不被执行,因为在上面的catch语句可能被抛到上层方法,抛给java虚拟机,程序退出,后面语句就不执行了。
2)如果try-catch中有return,在执行它们的return之前的语句后,跳转到finally语句,里面有return,执行finally中的return结束。
3)如果finally没有return,则执行try或catch中的return语句,实现退出
7 编译时异常,不是说有异常才处理,而是存在异常的隐患,必须在编译前提示程序,万一出现异常,如何处理。所以要提前写try-catch