Exception 一. 什么是java里的异常 二.java里的异常的分类 三.java里对异常的处理 四.Try catch finally 的处理机制

一. 什么是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处理。


三.java里对异常的处理

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

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

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

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

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

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

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

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

四.Try catch finally 的处理机制

4.1try catch finally

4.1.1 为什么需要finally

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章