异常父类:

      所有异常的最终父类都是Thorwable;

    异常在java中,以类和对象的形式存在;

UML

    UML是一种统一建模语言,一种图标式语言(画图的)

    UML不只是java语言使用,只要是面向对象编程语言,都有使用,

    一般画UML图的,都是软件架构师,或者系统分析师,以及软件设计人员在使用;

    在UML图中,可以描述类和类之间的关系,程序的执行流程,以及对象的状态等;

    UML图就相当于一种设计图;

    画UML的专业工具有很多,例如:Rational Rose(收费的)、starUML等等;

异常的继承结构:

        ·Error下所有的子类,一旦发送异常,是不可处理的,必须java虚拟机(jvm)终止程序运行/退出jvm;

    ·Exception下所有子类,发生的异常都是可处理的;

    ·但不管是Error还是Exception异常,都是可抛出的;

    ·Exception有两个分支;分别是:ExceptionSubClass和RunTimeException;

    ·而ExceptionSubClass是Exception的直接子类;该异常被称为编译时异常;

    ·ExceptionSubClass编译时异常,并不是编译时发生异常,而是必须在编写程序的时候,预先处理;如果不处理,编译器报错;

    ·而RunTimeException的下面还有很多子类;该异常以及该异常的所有子类都被称之为运行时异常;

    ·RunTimeException运行时异常,在编写程序阶段,可以选择处理,亦可以选择不处理;

    ·所有异常都只会在运行阶段发生;因为只要程序运行阶段,才可以new对象;

    ·其实异常的发生就是在new异常对象;

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

    ·编译时异常一般发生的概率比较高,

    ·运行时异常一般发生的概率比较低;

异常的其他别称:

    ·编译时异常:

        受检异常;(CheckedException)

        受控异常;

    ·运行时异常:

        未受检异常;(UnCheckedException)

        非受控异常;

 

异常的处理方式:

 

       第一种:在方法声明的位置上,使用throws关键字;

 

      第二种:使用try…catch…语句进行异常的捕捉;

      在main方法中的异常,一般建议使用try…catch的方式进行捕捉;不建议继续往上抛;

      catch写多个的时候,类型必须遵循从小到大的顺序;

注意在java中,如果异常发生了一直上抛,最终抛给了main方法,main方法也会继续往上抛,抛给调用者JVM,而JVM一旦知道异常发生,只有一个结果,那就是终止程序执行;

 

      异常处理的机制就是增强程序的健壮性;

 

jdk8的新特性:

 

     catch括号内,支持编写多个异常,异常之间使用“|”隔开,变量名只写一个就可以,

 

     这种写法只在jdk8及以上的版本支持,jdk7是不支持的;

 

异常对象的常用方法:

 

     getMessage();获取异常简单描述信息;

 

     printStackTrace();打印异常堆栈追踪信息;(实际开发中,建议使用该方法)

 

finally:

 

      ·在finally子句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常;

 

     ·finally子句必须和try一起使用,不能单独使用;(允许可以没有catch分支语句)

 

     ·try不能单独使用;

 

     ·finally一定会执行的条件不是绝对的,在try中,编写代码有return;finally语句是同样会执行的,而只有一种情况下,才会导致finally语句中的代码不执行;

 

      System.exit();退出JVM;只要try中,被加上了退出java虚拟机的代码,finally就无法执行;

 

final、finally、finalize之间的区别:

 

      ·final是一个关键字,表示最终的,不变的;

 

     ·finally是一个关键字,需要与try联合使用,出现在异常处理机制中,在finally语句中的代码是一定会执行的;

 

     ·finalize是一个标识符,是object类中的一个方法,作为方法名出现;

 

       Finalize方法是JVM的垃圾回收机制负责调用;

 

自定义异常:

 

     两个步骤:

 

     第一步:编写一个类继承Exception或者RunTimeException;

 

     第二步:提供两个构造方法,一个无参数的,一个带有String参数的;

 

Throws和throw的区别:

 

     ·throws 是在方法上使用,表示上报异常;

 

     ·throw 表示手动抛出异常;

 

 

posted on 2022-02-28 15:14  Jron*  阅读(49)  评论(0)    收藏  举报