关于java中异常的概述

异常概述

异常:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。简单来说就是程序出现了不正常的情况。

异常本质就是java当中对出现的问题进行描述的一种对象体现。

常见的异常:

  1. 除数不能为0异常(ArithmeticException)

  2. 空指针异常(NullPointException)

  3. 数组越界异常(ArrayIndexOutOfBoundsException)

  4. 类型转换异常(ClassCastException)

  5. ParseException

  6. ClassNotfoundException

异常分类

  1. Error:称为错误,由java虚拟机生成并抛出,程序对其不做处理。

  2. Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示的声明或捕获。

  3. RuntimeException:运行时期异常,又称为非受检异常,RuntimeException及其所有子类都是运行时期异常。

  4. 编译时期异常:不是继承自RuntimeException的Exception的子类都称为编译时期异常。

如下图解

1565926285510.png

异常处理

  1. 如果我们不做任何处理,异常将会交由虚拟机来处理;虚拟机的处理方式是:把异常的名称、异常出现的位置、异常原因等信息输出打印在控制台,并同时将程序停止执行。

  2. 我们自己处理异常的方式有两种:

    1)try...catch...finally

    异常处理的格式:

    try{
    //放置程序可能出现问题的代码
    }catch(异常类 异常名){
    //这里放置异常处理的代码
    } finally{
    //释放资源
    }
    2)throws抛出异常

    格式:

[修饰符] 返回值类型 方法名(参数列表) [throws 异常类1,异常类2....]{
}
注意:

  1. java中的Error我们没有办法处理,我们只需要关心Exception的处理。

  2. 编译时异常:java程序必须处理,否则无法通过编译,程序报错。

  3. 运行时异常:程序可以不处理,但是建议一旦发现就应该和编译时异常一样处理。

Throwable类

Throwable类是java语言中所有错误或异常的超类。

成员方法:

  1. public String getMessage():返回此 throwable 的详细消息字符串

  2. public String toString():获取异常类名和异常信息。

  3. public void printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。

  4. public void printStackTrace(PrintStream s):通常用该方法将异常内容保存在日志文件中,以便查阅。

Throws关键字

  1. 概述:在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,而交给方法的调用者进行处理。

  2. 使用格式:

[修饰符] 返回值类型 方法名(参数列表) [throws 异常类1,异常类2....]{
}

注意:

  1. 如果一个方法声明的是编译时期异常,则在调用这个方法之处必须处置这个异常(谁调用谁处理)。

  2. 重写一个方法时,它所声明的异常范围不能被扩大。

Throws和Throw的区别

  1. throws用在方法声明后面,跟的是异常类名;throw用在方法体内,跟的是异常对象名。

  2. throws可以跟多个异常类名,用逗号隔开;throw只能抛出一个异常对象名。

  3. throws表示抛出异常,由该方法的调用者来处理;throw表示抛出异常,由方法体内的语句处理。

  4. throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。

finally关键字

  1. finally修饰的代码块一定会被执行,除非在执行到finally之前程序异常退出或者调用了系统退出的方法。比如:System.exit();

  2. finally用于释放资源,在IO流操作和数据库操作中会见到。

(finally相关的面试题:final、finally、finalize三者间的区别)

你可能感兴趣的:(关于java中异常的概述)