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

2019-07-24  本文已影响0人  开源oo柒

一、异常:

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.自动拆箱:

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

上一篇下一篇

猜你喜欢

热点阅读