1、先执行try中的代码块,再执行catch中的代码块,最后执行finally中的代码块,try中可以有多个catch,范围从小到大。
2、受检异常(checked):又叫编译期异常。 在写代码就必须手动进行捕获处理。
非受检异常(unchecked):又叫运行期异常。指在写代码是不检查的异常,如零除,数组越界、空指针等。 由于是在运行时发生,所以又叫运行期异常。通常是编码出现了逻辑错误而导致的。
3、异常:ClassCastException->RuntimeException->Exception->Throwable->Serializable
错误:StackOverflowError->VirtualMachineError->Error->Throwable->Serializable
4、运行期异常:空指针异常:NullPointerException 类型强制转换异常:ClassCastException 传递非法参数异常:IllegalArgumentException 下标越界异常:IndexOutOfBoundsException 数字格式异常: NumberFormatException
非运行期异常:找不到指定的class的异常:ClassNotFoundException IO操作异常 IOException
5、throw:是语句抛出一个异常 throws:是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)
6、自定义异常:Java提供的异常类在某些情况下不能满足实际需求。好处:方便控制异常流程。
7、能够导致程序中断执行
8、1)在本方法內捕获
try { throw new IOException("文件读取出错了"); } catch (IOException e) { e.printStackTrace(); }
2)在本方法内不捕获,抛出,交给外部调用方法
throw new IOException("文件读取出错了");
3)先捕获,再抛出一个新的异常
try { throw new IOException("文件读取出错了"); } catch (IOException e) { throw new Exception("这是一个新的异常"); }