关于java中异常的基本处理的概述

异常是在开发过程中不可避免的,但并不是所有的错误都是不可处理的,要先处理可以预见的错误,不要随便抛异常给虚拟机。对于Exception本文只做基本的概述,不做深入探讨,但对于想自己开发虚拟机的同学,异常必须得深入。

  1. 所有异常都是java.lang.Exception的子类

  2. Exception是Throwable的子类,Throwable还有一个Error的子类

  3. 异常有两个子类IOException和RuntimeException

    关于java中异常的基本处理的概述

关于异常的种类有如下两种,这些异常类都是定义在java.lang包中,默认加载到java程序中,可以直接使用的。

  1. 非检查性异常

    关于java中异常的基本处理的概述

2.检查性异常

关于java中异常的基本处理的概述

关于异常的处理有两种方式 try { }catch(){}和throw 捕获和抛出异常

  1. try....catch...方式 示例,如下代码 我们输入的参数为非数字时,显示InputMismatchException错误,我们得知输入参数错误,当发生错误就直接停止程序,这对开发来说是致命的。

关于java中异常的基本处理的概述

所以,我们可以捕捉这个错误 然后做相关的处理,还是输入参数a,保证程序的正常运行。使用第一种方式,选择可能出现错误的位置用try“包起来” 捕捉异常,鉴于这是新手教程,我们直接catch最大的异常Exception,做相关处理。要是对异常有过深入了解的同学可以使用多重捕获块如下 图二所示。

关于java中异常的基本处理的概述

关于java中异常的基本处理的概述

由上可知 处理异常后 即使输入参数有误,我们还是可以输出发生异常后的代码("程序正常运行")

有时候为了方便控制程序走向 我们可以加上关键字finally,意思就是不管程序怎么运行 都会执行finally里的代码(前提是要先捕获异常,不能单独存在finally)

关于java中异常的基本处理的概述

还是上述的例子,我们采用第二种方式throws。异常的抛出,意思是这段代码出现的问题解决不了 抛给上一级,要是上一级也处理不了,继续抛,直到抛给虚拟机处理(正常停止程序)

关于java中异常的基本处理的概述

这个是稍微修改的代码,基本没变。出现异常后直接throws给上一级,也就是调用这个方法的函数 b.get(); 有同学会有疑问,如果我们抛出异常而不去处理会怎样,如下所示:

关于java中异常的基本处理的概述

这样写直接报错,都不用看后续步骤,这时我们有两个选择,一个时如上所示try catch 另外一个是继续抛异常:

关于java中异常的基本处理的概述

我们直接再main也就是主程序的入口抛出异常,无法继续抛了,因为只有虚拟机才能调动主程序,程序员是没有办法直接调用的。

关于java中异常的基本处理的概述

由上图可知 直接抛出异常,程序就会在异常处停止向上抛,并不会执行下面的代码。所以除非是无能无力 不然不要随便抛异常。

当然我们也可以自定义异常,但是我们自定义的异常根据所需要的功能,要继承Exception类或者RuntimeException类。本文不做深入探讨。各位,告辞!


分享到:


相關文章: