Java---异常

Java---异常

  • 一、初识异常和错误
  • 二、处理异常的方法
    • 1、try-catch语句
    • 2、throw 和 throws关键字
  • 三、异常使用细节
  • 四、常见异常

一、初识异常和错误

异常是组织当前方法或者作用域继续执行的问题,在程序中导致程序中断运行的一些指令
通俗来说异常(Exception)就像是人生了一场小病,如发烧,感冒,拉肚子,去医院挂个吊瓶就会好的,而去医院挂吊瓶就像是Java中的异常处理机制,对程序中的小毛病处理一下,让程序继续运行下去不会导致程序崩溃。

异常又分为编译期异常(Exception)和运行期异常(RuntimeException)

错误:错误(Error)就是程序无法处理的错误,JVM直接就让这个程序挂了,就像一个人得了重病,已经无法医治了,然后就over了

二、处理异常的方法

1、try-catch语句

第一种方法,使用try-catch语句,格式如下:

try{
	//可能出现异常的代码块
	}catch(异常类型 对象){
	//异常的处理操作
	}finally{
	//异常的统一出口,一般用于释放资源
	}

finally语句的作用,不管是否产生了异常,最终都会执行后面的代码
案例:

public static void main(String[] args) {
        try {
            String str="hello";
            int m=Integer.parseInt(str);
            System.out.println("转换后的数字是:"+m);
            int a=9;
            int b=0;
            int c=a/b;
        } catch(ArithmeticException e){
            System.out.println(e.getMessage());
        }
        catch (Exception e){
            System.out.println("异常信息:"+e.getMessage());
        }finally {
            System.out.println("释放资源");
        }
        System.out.println("程序继续进行!");

        }

Java---异常_第1张图片

2、throw 和 throws关键字

第二种方法,使用throw 和 throws关键字

(1)throws关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用者来处理。在Java程序中,如果没有加入任何的异常处理,则默认由JVM进行异常处理操作

public class Throw1 {
    public static void main(String [] args){
        try {
            method(6,0);
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
        System.out.println("后面的代码");
    }
    public static void method(int a , int b)throws ArithmeticException{
        int i = a/b;
        System.out.println(i);
    }
}

(2)throw关键字表示在Java程序中手动抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出一个异常类的实例化对象,那么此对象也可以有throw抛出。

public class Throw1 {
    public static void main(String [] args){
        try {
            method(6,0);
        } catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("后面的代码");
    }
    public static void method(int a , int b){
        if (b==0){
            throw new ArithmeticException("除数不能为零");
        }
        int i = a/b;
        System.out.println(i);
    }
}

三、异常使用细节

1、try语句不能单独使用,可以和catch,finally组成try-catch-finally,try-catch,try-finally三种结构,catch语句可以有一个或者多个,finally语句最多有一个,try,catch,finally三个关键字均不能单独使用。

2、try,catch,finally三个代码块中变量的作用域分别独立而不能相互访问

3、多个catch块的时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块

4、Exception和RuntimeException的区别:
Exception是受检异常,在编译期检查,在调用这个抛出异常的方法时,必须显示地使用try-catch语句进行捕获异常。RuntimeException是非受检异常,在运行期检查,在调用抛出这个异常的方法时可以不用显示地使用try-catch

四、常见异常

1、ArithmeticException(算数异常)
2、ArrayIndexOutofBundsException(数组下标越界异常)
3、NullPointerException(空指针异常)
4、InputMismatchException(输入不匹配异常)
5、RuntimeException(运行时异常)
6、ClassNotFoundException(类加载异常)
7、DataFormatException(数据格式化异常)
8、ClassCastException(类转换异常)
9、ArrayStoreException(数据存储异常)

你可能感兴趣的:(JavaSE,java,java-ee,intellij-idea)