day19 Java学习(day19(异常&IO(File类)))

 异常(异常的概述和分类)

   概述:Java运行过程中出现的错误。

   分类:

            * Throwable 

                * Error  (服务器宕机 , 数据库崩溃...)

                * Exception     

   异常继承体系:

            * Throwable 

                * Error 

                * Exception  

                      * RuntimeException  (运行时异常)

异常(try...catch的方式处理异常)

 try:用来检测异常的。

 catch:用来捕获异常的。

 finally:释放资源

 异常处理的两种方式:   

               1: try...catch...finally

                            * try   catch     

                             * try   catch  finally               

                             * try   finally   

                 2: throws

 try...catch处理异常的基本格式:

                          * try...catch...finally       

异常(throws的方式处理异常)

     throws的方式处理异常:

                           * 定义功能方法时,需要把出现问题暴露处理让调用者去处理。

                           * 那么就通过throws在方法上标识。

     

public void setAge(int age) throws Exception { //throws标识
        if (age<0) {
            //抛出一个异常
            throw new Exception("年龄不能少于0");
        }else if (age==0) {
            throw new Exception("年龄不能等于0");
        }else {
            this.age = age;
        }
        
    }
例子

异常(throw的概述以及throws的区别)

    throw的概述:在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

    

    throw以及throws的区别:

       throw:

                  * 用在方法体内,跟的是异常对象名。

                  * 只能抛出一个异常对象名。                 

                  * 表示抛出异常,有方法体内的语句处理。            

       throws:

                  * 用在方法声明后面,跟的是异常类名。

                  * 可以抛出多个异常类名,用逗号隔开。                 

                  * 表示抛出异常,有方法的调用者处理。     

异常(finally关键字的特点及作用)

    finally的特点:

                   * 被finally控制的语句体一定会执行。

                   * 特殊情况:在执行到finally之前JVM退出了(比如System.exit( 0 ):退出JVM虚拟机)。

    finally的作用:

                   * 用于释放资源。(是try语句中的一个语句体,不能单独使用)

    注意:千万不要在finally里面写返回语句。(如果里面写了返回语句,那么try和catch的结果都会被改变)

异常(编译期异常和运行期异常的区别)

    Java的异常被分为两大类:编译期异常和运行期异常。

    所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译期异常。

    编译时异常:

              * Java程序必须显示处理,否则程序就会发生错误,无法通过编译。(比如文件找不到)

     运行时异常:

              * 无需显示处理,也可以和编译时异常一样处理。

异常(Throwable的常见方法)

               * getMessage( )  :获取异常信息,返回字符串

                * toString( )        : 获取异常类名和异常信息,返回字符串

                * printStackTrace( )  :获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。

异常(自定义异常概述和基本使用)

    自定义异常概述:

                 * 继承自Exception 

                 * 继承自RuntimeException

异常(异常的注意事项及如何使用异常处理)

        异常的注意事项:

                 * 子类重写父类方法时,子类的方法必须抛出相同的异常或父类的子类。

                 * 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是它的子集,子类不能抛出父类没有的异常。

                 * 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常。如果子类方法内有异常抛出,那么子类只能try ,不能throws。

        

        如何使用异常处理:

                 * 原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这时用throws。

                 * 区别: 

                             * 后续程序需要继续运行就try

                              * 后续程序不需要继续运行就throws

                 * 如过JDK没有提供对应的异常,需要自定义异常。                         

finally

猜你喜欢

转载自www.cnblogs.com/feng0001/p/10947397.html