java异常以及处理


捕获异常基本用法:

try{
有可能出现异常的语句 ;

}[catch (异常类型 异常对象) {
} … ]

[finally {
异常的出口

}]

注意:

try 代码块中放的是可能出现异常的代码.

catch 代码块中放的是出现异常后的处理行为.

finally 代码块中的代码用于处理善后工作, 会在最后执行.

其中 catch 和 finally 都可以根据情况选择加或者不加.
package com.mengh.Demo01;

public class Demo01 {
    public static void main(String[] args) {
        int arr[]={1,2,3,4};

        try {
            System.out.println(arr[100]);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("下标越界异常!");
        }
        System.out.println("arr[1]");
    }
}

java异常处理弹出提示 java异常处理入口_System

e.printStackTrace(); //打印调用栈的异常信息!

多个catch的使用,如同else if

package com.mengh.Demo01;

public class Demo01 {
    public static void main(String[] args) {
        int arr[]={1,2,3,4};

        try {
            System.out.println(arr[100]);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
            System.out.println("下标越界异常!");
        }catch (NullPointerException e){
            e.printStackTrace();
            System.out.println("空指针异常!");
        }
        System.out.println("arr[1]");
    }
}

java异常处理弹出提示 java异常处理入口_代码块_02

结合finaly来使用,在有些使用场景,如释放资源等,要搭配finaly来使用:
package com.mengh.Demo01;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        try {
            while (scanner.hasNext()) {
                int result = scanner.nextInt();
                System.out.println(result);
            }
        }catch (InputMismatchException e){
            e.printStackTrace();
        }
        finally {
            scanner.close();
            System.out.println("关闭资源!");
        }

    }
}

java异常处理弹出提示 java异常处理入口_System_03

使用了finally,无论程序是否有异常,finally里内的语句都会执行,从而保障了scanner的close方法的执行;从而释放了资源,做好了善后工作!