目录
一、什么是异常
二、异常的基本用法
三、抛出异常
四、finally的使用
public static void main(String[] args) { System.out.println(10/0); }
发生异常如果没有处理,那么系统就会交给jvm去处理,而jvm进行处理的时候程序就会停止。
异常就是在程序员运行时,出现错误时通知调用者的一种机制。
Throwable派生出的两个子类Error和Exception(错误和异常)
RuntimeException为运行时异常,IOException为编译时异常。
Error是java在运行时内部错误和资源耗尽错误,应用程序不抛出异常,必须由程序员处理这些异常:
异常处理的基本用法为
try { }catch (){ }finally { }
try中存放的是可能存在异常代码
catch存放的是出现异常后的行为
finally中存放的是代码块的善后工作,最后执行
例:
public static void main(String[] args) { try { System.out.println(10/0); }catch (ArithmeticException a){ a.printStackTrace(); }finally { System.out.println("xccccc"); } }
由上面我们可以看出代码继续执行了下去,由于Exception是所有异常的基类,所以我们可以直接在catch中写入但是不建议这样做,不清楚异常出现在什么地方。
注意:catch中的内容只能在出现异常的时候执行。
操作者和java内置的类会抛出一些异常,我们通常使用throw关键字来操作。
public static void func() throws ArrayIndexOutOfBoundsException{ int[] arr={1,2,3,4}; System.out.println(arr[100]); } public static void main(String[] args) { func(); }
public static int func() throws FileNotFoundException { File file=new File(""); Scanner sc=new Scanner(file); return sc.nextInt(); }
finally执行是在方法返回之前,catch和finally中同时存在return,就会执行finally中的return,不会执行其他的。
public class practice { public static int func(){ try { System.out.println(10/0); }catch (ArrayIndexOutOfBoundsException a){ return 1; }finally { return 0; } } public static void main(String[] args) { System.out.println(func()); } }