Throwable类是所有异常或错误的父类,他有两个子类:Error和Exception,分别是错误和异常。其中异常Exception分为运行时异常(RuntimeException)和编译时异常。
Error:一般指java虚拟机相关的问题,如系统崩溃,虚拟机出错误,动态链接失败等,这些错误无法恢复或不可能捕捉,将导致应用程序中断,通常应用程序无法处理这些错误。
Exception异常分为两种:
Exception:编译时异常,如果异常不处理,则代码无法编译,无法运行;
RuntimeException:运行时异常,运行时发生,无需处理,修改相应代码处理异常;
常见的运行时异常:
NullPointerException:空指针异常,调用了未初始化的对象或者不存在的对象;ClassNotFountException:指定类不存在,主要是看一下类名称或者路径是否正确;ArrIndexOutOfBoundsException:数组下标越界异常,对数组时操做时调用下标超过数组范围;NoSuchMethodException:方法不存在错误。调用某个类的某个方法时,而该类中没有该方法;FileNotFoundException:文件未找到异常,进行IO操作时,访问的文件不存在;throw和throws区别:
throws出现在方法函数头,throw出现在方法体内;throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象;两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数处理异常,真正的处理异常由函数的上次调用处理;例:
throws :
public static void write() throws FileNotFoundException {
FileInputStream fileInputStream=new FileInputStream("c");
}
throw:
String s = "abc";
if (s.equals("abc")) {
throw new NumberFormatException();
}
NullPointerException 空指针异常
ClassNotFoundException 指定类不存在
NumberFormatException 字符串转换为数字异常
IndexOutOfBoundsException 数组下标越界异常
ClassCastException 数据类型转换异常
FileNotFoundException 文件未找到异常
NoSuchMethodException 方法不存在异常
IOException IO 异常
SocketException Socket 异常
try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须
后面跟一个 catch 或者 finally。
finally 一定会执行,即使是 catch 中 return 了,catch 中的 return 会等 finally 中的代码执行完之后,才会执行。
final:是修饰符,如果修饰类,此类不能被继承;修饰方法,方法不能被重写;修饰变量,变量为常量,只能赋值
一次。
finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果
finally 部分存在,则一定会执行 finally 里面的代码。
finalize: 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。