1.概述

异常:就是程序中出现了不正常的情况
image.png

2.JVM的默认处理方案

如果程序出现了问题,我们没做任何处理,最终JVM会做默认的处理:

  • 把异常的名称,异常原因即异常出现的位置等信息输出在控制台
  • 程序停止执行

    3.异常处理

    如果程序出现异常,需要我们自己处理,不让它直接停止运行还能往下走,有一下两种方法

  • try…catch…

  • throws

    try…catch

    特点:遇到异常匹配成功后还能继续往下执行
    image.png
    image.png

    Throwable的成员方法

    Throwable是所有异常和错误的祖宗类,只要属于这个体系的,都可以使用它的成员方法
    image.png
    这三个方法从上到下输出的错误提示越来越全面,因此一般使用最后那个方法
    三种方法的调用:
    image.png

    编译时异常和运行时异常的区别

    Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常
    所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常

  • 编译时异常:必须显示处理 ,否则程序就会发生错误,无法通过编译

  • 运行时异常:无法显示处理,也可以和编译时异常一样处理

    throws异常处理

    有时候可能出现的异常处理不了,此时使用throws
    格式:
    throws 异常类名;
    注意:跟在方法括号后面
    意义:并不能处理异常,只是抛出异常,把异常甩给别人,叫别人好处理

编译时异常必须要进行处理,有两种发方案:try…catch…或throws(谁调用谁处理)

自定义异常

即自己定义的类 继承 Exception或RuntimeException,使其称为异常的一员
格式:
public class 异常类名 extends Exception{
无参构造
带参构造
}

throws和throw的区别

throws

  • 用在方法后面,其后面跟的是异常类名
  • 表示抛出异常,由该方法的调用者来处理
  • 表示出现异常的一种可能性,并不一定会发生这些异常

    throw

  • 用在方法内,其后面跟的是异常对象名

  • 表示抛出异常,由该方法内的语句处理
  • 执行throw一定抛出了某种异常