异常

异常

定义

程序执行过程中发生了不正常的情况,这种不正常的情况就叫做异常

异常信息:(由JVM——java虚拟机打印)

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.jintianxuejavalema.javase.exception.ExceptionTest01.main(ExceptionTest01.java:8)

java提供异常机制的作用:增强程序的健壮性

java语言是很完善的语言,提供了异常的处理方式,以下程序执行过程中出现了不正常的情况(异常),java吧该异常信息打印输出到控制台,供程序员参考。程序员看到异常信息之后,可以对程序进行修改,让程序更加的健壮。

异常存在形式:

异常在java中以类和对象的形式存在,每一个异常类都可以创建异常对象

    public static void main(String[] args) {
        //通过“异常类”实例化“异常对象”
        NumberFormatException nfe = new NumberFormatException("数字格式化异常");

        System.out.println(nfe);
    }

运行结果:
在这里插入图片描述

异常的继承结构

Object

Object下有Throwable,不管是错误,还是异常,都是可抛出的)

Throwable下有两个分支:

  • Error(所有的错误只要发生,java程序只有一个结果,那就是终止程序的执行,不可处理,直接退出JVM)
  • Exception(可处理的)

Exception下有两个分支:

  • Exception的直接子类:编译时异常/受检异常/受控异常(要求程序员在编写程序阶段必须预先对这些异常进行处理)
  • RuntimeException:运行时异常/未受检异常/非受控异常(在编写程序阶段,你可以选择处理,也可以不处理)

异常分类——编译时异常/运行时异常

编译时异常和运行时异常,都是发生在运行阶段。编译阶段异常是不会发生的。

编译时异常:因为编译时异常必须在编译(编写)阶段预先处理,如果不处理编译器报错,因此得名。所以异常都是在运行阶段发生的。因为只有程序运行阶段才可以new对象

异常的处理——两种

第一种方式: 在方法声明的位置是哪个,使用throws关键字(异常上抛)

注:java中异常发生之后,如果一直上抛,最终抛给了main方法,main方法继续向上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果,终止java程序的执行

第二种方式: 使用try…catch语句进行异常的捕捉(异常捕捉)

/*
    第一种处理方式:异常上抛,未完成的异常继续上抛,抛给调用者
    public static void main(String[] args) throws  ClassNotFoundException{
        doSome();
    }
    */
    public static void main(String[] args) {
        //第二种处理方式try..catch进行捕捉
        try {
            //try尝试
            doSome();
        } catch (ClassNotFoundException e) {//'e'——是变量名
            //catch是捕捉异常之后走的分支
            e.printStackTrace();
        }
    }
    public static void doSome() throws ClassNotFoundException{
        System.out.println("doSome!!!");
    }

注:子类重写父类的方法时,子类不能比父类抛出更多的异常

posted @ 2021-01-29 00:51  许君  阅读(37)  评论(0编辑  收藏  举报