一. 什么是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 finally4.1.1 为什么需要finally
catch都没有捕获到,最终会执行到finally进行处理(双层保障)。
网友评论