1. 什么是异常
异常可以理解为:程序内部产生出错,若可以自行处理,则不影响程序继续运行;若不能处理则上抛给Java虚拟机,程序终止运行。
当程序出现异常时,有两种处理手段:抛出、捕获。
抛出:则由上层调用处理。
捕获:则在当前程序段处理。
若异常则一直抛出,最终由虚拟机处理,此时异常变为错误,程序终止。
2. 异常抛出
2.1 系统抛出:不在程序中做任何处理,若有异常,则系统会自动抛给上层调用。例:在程序中出现除0问题,不用try-catch时,则自动上抛给上层
2.2 throw:手动抛出异常。例如在判断一些条件时,当条件出现不能处理时,则可以使用throw抛出一个异常给上层调用。例:throw new ArithmeticExecption(); // 抛出算术异常
2.3 throws:在方法定义后面使用,告诉调用者,这个方法可能抛出异常,但不是每次调用都会抛出。例:private static void test() throws Exception{}
当程序出现异常时,系统会自动抛出异常,所以不是一定要使用throws,但在一些条件下需要,例如:在io编程时,定义io流变量时,不使用try-catch或throws则编译无法通过,socket编程时也是类时,此时则必须在throws与try-catch之间选择一样。
3. 异常捕获:
try-catch:
try程序块中为可能出现异常的程序,catch块为异常处理