您的位置:首页 > 其它

第十四篇(异常[exception]) :《据说是:“当今社会最有前途!最值得学习的语言!”》让我们来了解一下这是什么样的一种语言!

2019-04-16 21:44 363 查看

异常[exception]

前言:

在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。

1. 了解异常概念

异常(Exception):在程序运行中/生活过程中,所发生的不正常的/不符合预期的情况(意外),这就是异常,它会导致程序的中断或者过程的结束。

异常的产生原因:
在 Java 中一个异常的产生,主要有如下三种原因:

  1. Java 内部错误发生异常,Java 虚拟机产生的异常。
  2. 编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。
  3. 通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。

异常的使用原则:
Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。

我们把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。

Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:

  1. 在当前方法声明中使用 try catch 语句捕获异常。
  2. 一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
  3. 如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。

2. 理解Java异常处理机制(关键字)

异常处理常用的有以下五个关键字:

  1. try : 尝试
  2. catch:捉、捕获、抓
  3. finally:最终的
  4. throw:抛 、扔
  5. throws:抛 扔 / 计算机释义:声明

3. 会捕捉异常

1.基础try-catch语法:

try{
// 可能会出现异常问题的代码段
}catch(能够捕获的异常类型 名){
// 对异常进行处理的代码段
}

添加了异常处理机制之后,程序运行的情况:

  1. 未出现异常

    正常执行try中的和try-catch后的代码,不会执行catch中的代码。

  2. 出现[对应]的异常

    在执行try中的代码时,如果出现异常,try中的代码不再往下执行,JVM会立刻创建对应的异常对象,然后将此对象传递给catch块中的异常类型形参,进入catch块对异常进行处理,处理完后继续执行后续代码。

  3. 出现[不对应]的异常

    在执行try中的代码时,如果出现异常,try中的代码不再往下执行,JVM会立刻创建对应的异常对象,然后将此对象传递给catch块中的异常类型形参,但如果catch的形参不匹配,则无法传入,也就无法进行异常处理,程序中断(和未添加异常处理一样的效果)。

2.多重catch语法:

try{
// 可能出现异常的代码段
}catch(异常类型1){
// 对应处理代码
}catch(异常类型2){
// 对应处理代码
}catch(){
.....
}

类似于多重if,只要有一个异常类型满足,剩下的异常类型捕获不会执行!

它的应用场景:需要对不同的异常进行不同的处理操作时,需要多重catch,但在很多场景下,为了省事,会直接捕获一个Exception父类。

3. try-catch-finally

finally中的代码,无论程序是否出现异常都会正常执行。

当finally和return同时出现时,会先执行finally中的代码然后执行return。

finally除断电等物理情况外的唯一不执行时机:System.exit(0); // 退出虚拟机

异常展示图:

异常中的常见类型及含义:

4. 会抛出异常

throw 接异常对象 抛出自定义的或者更全面的异常信息对象。

throws 接异常类型 标注在方法声明上的 4000 ,用来声明此方法可能出现的异常类型。

自定义异常:

public class 自定义异常类型   extends  Exception{
// 编写带参构造
// 编写无参构造
}

5. 了解Java异常体系结构

在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 Error。

Throwable的详细分支如下图:

Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常。其中异常类 Exception 又分为运行时异常和非运行时异常,这两种异常有很大的区别,也称为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。

  • Exception 类用于用户程序可能出现的异常情况,它也是用来创建自定义异常类型类的类。
  • Error 定义了在通常环境下不希望被程序捕获的异常。Error 类型的异常用于 Java 运行时由系统显示与运行时系统本身有关的错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐