美文网首页
Java学习day-14:异常机制和自动拆箱和装箱

Java学习day-14:异常机制和自动拆箱和装箱

作者: 开源oo柒 | 来源:发表于2019-07-24 22:51 被阅读0次

    一、异常:

    1.异常的概念:

    就是在程序的运行过程中所发生的不正常的事情,它会中断正在运行的程序;例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。

    2.异常的分类:

    所有异常的根类为Throwable,Throwable下面又派生了两个子类:Error和Exception。

    (1)error是程序无法处理的错误,表示运行应用程序中比较严重的问题;Error表明系统JVM已经处于不可恢复的崩溃状态中。我们不需要管它。

    (2)Exception是程序本身能够处理的异常,Exception类是所有异常类的父类,其子类对应了各种各样可能出现的异常事件;又分为:RuntimeException运行时异常;CheckedException已检查异常;

    (3)运行时异常:通常是由编程错误导致的,在编写程序时,并不要求必须使用异常处理机制来处理这类异常,经常需要通过增加“逻辑处理来避免这些异常”。

    代码截图 结果

    (4)常见错误:

    1) 算术异常ArithmeticException

    2)空指针异常,没有创建对象(new)而调用了对象的属性或方法NullPointerException

    3)类型转换异常ClassCastException

    4)数组下标越界ArrayIndexOutOfBoundsException

    5)输入类型与期望输入类型不匹配InputMsimatchException

    (5)已检查异常: 所有不是RuntimeException的异常;被称为Checked Exception,如IOException、SQLException等以及用户自定义的Exception异常。

    二、异常的处理方式:

    1.捕获异常:

    捕获异常是通过3个关键词来实现的:try-catch-finally;

    (1)try-catch:

    1)正常情况:

    2)异常情况:异常出现的类型与捕获的类型匹配;

    3)异常情况:异常出现的类型与捕获类型不匹配;

    (2)try-finally:finally 是无论是否产生异常,都执行的代码,但是有一种

    情况 finally 不执行,即退出 Java 虚拟机。

    (3)try-catch-finally:

    1)正常情况:执行try-finally;

    2)异常情况:类型相匹配,执行try-catch-finally;

    3)异常情况:类型不相匹配,执行try-finally

    如果在 catch 中存在 return 语句,则先执行完 finally 语句再回头执行 return 语句

    代码截图 结果

    2.声明异常:

    (1)声明异常关键字throws;方法名的后面,用于声明该方法可能会产生一个异常如果方法声明的是 Exception 类型的异常或者是 CheckedException 异常,要求方法的调用处 必须做处理。

    (2)继承关系中的声明异常:

    1)父类的方法声明了 Exception 类型的异常,子类在重写方法时,可以声明也可以不声明。但是如果子类重写后的方法使用 super 关键字调用父类的方法,那么要求必须对异常进行处理。

    2)如果父类的方法没有异常,那么子类的方法如果一定会有 Exception 或 Checked 异常,要求子类必须自己使用 try-catch 处理,或者给父类方法加上异常的声明。

    3)如果子类在重写父类的方法时,产生的异常是RuntimeException 异常时,那么可以不用处理。

    (3)throw抛出异常:写在方法里,再捕获异常前,必须有一段代码先生成异常对象并把它抛出。这个过程手动去做。

    (4)两者的区别:

    1)throws :用于声明方法可能会产生的;写在方法后面;

    2)throw:手动抛出异常对象;写在方法里面;

    3.自定义异常:

    步骤:(1)继承Exception或RuntimeException;

               (2)定义构造方法;

               (3)使用异常;

    代码截图 结果


    三、自动装箱和拆箱:

    1.包装类:

    Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class); 包装类均位于java.lang包。

    (1)八种包装类和基本数据类型的对应关系:

    (2)八个类中除了Character和Boolean以外,其他六个和基本数据类型一致,只是类名的首字母大写。

    (3)包装类的继承关系:

    (3)内存分析:

    (4)包装类的用途:

    1) 作为和基本数据类型对应的类型存在;

    2)包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法;

    代码截图 结果

    2.自动装箱;

    基本类型就自动地封装到与它相同的类型的包装类中。

    3.自动拆箱:

    包装类对象自动转换成基本类型数据。

    相关文章

      网友评论

          本文标题:Java学习day-14:异常机制和自动拆箱和装箱

          本文链接:https://www.haomeiwen.com/subject/fvyzlctx.html