Exception

作者: Nenezsnp | 来源:发表于2021-09-16 17:19 被阅读0次

    一. 什么是java里的异常

    1.1定义

    异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。在Java等面向对象的编程语言中异常属于对象(Exception)。

    1.2 java里运行时出现的错误

    除数为零的异常报错

    二.java里的异常的分类

    1.1异常的继承实现关系

    异常实现继承关系 异常分类

    Throwable 代表是可抛出的.

    Error:代表的是严重错误,这种错误程序员无法进行处理,例如操作系统崩溃,jvm出错,动态链接库失败等(如OutOfMemory)。

    Exception:代表的就是异常了。它下面很多派生类,其中它的派生类也分两种,一种是RuntimeException(运行时异常),其他的都是非运行时异常(如ClassNotFoundException)。

    RuntimeException:包括除数为0,数组下标超界等。运行时异常的派生类有很多,其产生频率较高.。它的派生类可以由程序处理或者抛给(throw) 给jvm处理。例如上面图1.2的例子就是抛给了jvm处理,jvm把程序中断执行,并把错误信息输出到终端上。

    非RuntimeExcption:这种异常属于Excepion的派生类,但是不是RuntimeException的派生类,这种异常必须由程序员手动处理,否则不通过编译。

    ArithmeticExcpetion:算术异常,它是RuntimeException的派生类,所以程序员不手动处理也通过编译,只不过出错时会被jvm处理。

    相关异常的分类,摘自(http://www.xwood.net/_site_domain_/_root/5870/5874/t_c255266.html)

    三.java里对异常的处理

    3.1对异常的处理try catch,捕获异常

    try catch 捕获异常,在工作过程中也有叫“吃了异常”。

    使用try catch后可以使可能出现异常的代码块,在出现时候进行处理(catch之后直接打log并且return上一层结果)。

    try catch捕获异常

    getMessage():Exception类的方法之一,返回异常的原因,上面的 / by zero 就是这个方法输出的。

    printStackTrace():Exception类的方法之一,在屏幕输出函数栈信息,也就是异常出现的地方(实现类Throwable的方法)。

    打印堆栈异常信息

    可以见到f() 加了个条件判断,如果参数b = 0,使用throw 直接手动抛出1个异常,让调用它的函数处理。

    g()调用f()函数,预见到f()可能有异常,但是也不想处理,使用throws 关键字告诉调用它的函数本函数有可能抛出这种异常。

    h()调用g(),简单g()定义的throws,用try catch在本函数进行处理。

    throws关键字

    四.Try catch finally 的处理机制

    4.1try catch finally

    try catch finally

    4.1.1 为什么需要finally

    catch都没有捕获到,最终会执行到finally进行处理(双层保障)。

    相关文章

      网友评论

          本文标题:Exception

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