异常体系

随声附和 提交于 2020-04-02 11:17:42

 异常的概述

Exception,在程序中能够强制编译器来处理程序执行中的发

生的并不是由程序本身所造成的错误。这个处理方法在java中就叫做异常捕获,

而这些并不是程序本身产生的错误就叫做“异常”。

基本异常

      举一个抛出异常的简单样例,对于对像引用f,传给你的时候可能没有初始化。

那么在使用这个对象调用其方法前能够先对它进行检查。像这样:

     if(f==null)

        throws new NullPointerException();

这就是抛出了一个异常,那么在当前环境下就不必操心这个可能出现的空指针异常了。

它将在别的地方获得处理。

使用异常处理机制的优点就是异常同意我们强制程序停止执行。

并告诉我们出现了什么问题。或者强制程序处理问题,并返回稳定状态。


异常处理程序

      假设要将抛出的异常进行恰当的处理,就得准备对应的处理程序。

异常处理程序紧跟在try代码块之后,以keywordcatch表示:

  try{

        //要尝试执行的代码

                                   }catch(){

        //处理该异常的代码

      }

  (关于catch语句的异常类型:假设是catch语句的异常类型是CapacityToolException的父类,

那么程序也回进入到catch语句中。)

 创建自己定义异常

java中不可能将全部的异常考虑的面面俱到。

所以有必要通过自己写的异常类来处理各种可能出现的异常,

要定义异常类。必须从已有的异常类中继承,最好是选择意思相近的异常类来继承。

Java异常的传递

     Java异常传递得出规则是;将宜昌传递给方法的调用者,

直接被处理掉或者到达main方法,异常传递给main方法后,

事实上就是被java平台处理掉了。

我们知道main方法就是程序的入口。

全部的方法调用都是从main方法開始的,所以一个异常最多也就是传递到main方法这里。

当一个异常在方法的代码中发生的时候,方法中后面的代码都不会被运行的。

异常的语法传递规则是:从某个方法中的某个throw语句開始,

异常将从这种方法传递到调用这种方法的地方,并按方法调用的顺序继续传递,

知道追出的方法。也就是main方法。

一场必须被传递出去或者被处理掉,否则在编译源码的时候。java编译器就会输出一个语法错误。

在程序执行的时候,假设方法的某行代码抛出了异常,那么方法之后的代码都不会执行。

7 try-catch-finally语句

     try-catch-finally语句的语法结构规则例如以下:

        try{

       //可能发生异常的代码

       }catch(异常类型1 异常引用) {

       //异常处理代码

       }catch(异常类型2 异常引用) {

       //异常处理代码

       }

       ……

       }catch(异常类型n 异常引用) {

        //异常处理代码

       }finally{

        //finally 语句代码块

       }

该段与try-catch语句唯一不同的就是在语句的最后,多出了一个finally块,

这样的语句的作用是:不管语句块中的代码是否发生异常,不管是否有catch语句可

以与异常匹配,finally语句块中的代码都会在之后运行,也就是说,这样的语法为原来的try-catch语句

多加了一种功能,使用finally块让一段代码肯定能够被运行到。

    可是,须要说明的是,final语句并不处理异常,就是说假设一个异常没有被catch、

语句处理掉。那么在这个异常被抛出到方法之前。会首先运行finally语句块,

可是在finally语句运行完之后,异常还是会被抛出去。同一时候。finally语句一定会被运行,

即使在catch语句中使用了return来结束方法,finally语句块也会被运行到。

 try-finally语句

在java的异常处理机制中,try-finally语句严格来说并非来处理异常的。try-finally语句的语义能够被理解为:尝试执行某段代码,不管这段代码是否有return语句,不管是否发生异常,都须要在结束后执行finally语句代码。



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!