一、问题
在实际开发中会经常遇到对异常的处理,但是在处理异常的时候具体有哪些方法和规范呢?
二、Java异常简介
Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常。Error 和 RuntimeException 以及他们的子类被称为非检查异常,除了Error 和 RuntimeException的其它异常被称为检查异常。由于Error错误值的是JVM运行时出现的异常,程序无法处理,这个异常出现一般会线程终止。我们需要研究的重点放在Exception上,出去Error后Exception又可分为运行时异常(RuntimeException)和非运行时异常。
运行时异常:RuntimeException 。程序在运行时期会出现的异常,如果异常不做处理会一直向上抛出,终止线程。
非运行时异常(编译时异常、属于非检查异常):除RuntimeException 的其他Exception 的子类。顾名思义,这类异常是发生在编译检查时期的,所以一般编辑器会强制你对异常做处理。
Java异常类层次结构图三、异常处理方法
上面简单介绍了异常的类型,但是在实际开发中我们会遇到一个问题:怎样的异常我需要向上抛出呢?怎样的异常我需要抓住呢?在查阅大量文章之后我做了一下总结:
首先说的是处理异常的方法:
1、恢复并继续:将异常捕捉,处理后恢复执行。这就是编译时异常出现的目的,处理方法就是捕捉异常并恢复继续执行程序。
2、向上传播:将异常向上抛出,让调用方处理该异常。说法太多,个人认为需要终止本方法可以抛出,知道上层方法可以捕捉处理,恢复执行也可以抛出,使用比较灵活。
3、转译异常:转译即把低层逻辑的异常转化成为高层逻辑的异常。对于本方法的异常对调用方来说比并不关心,调用方可能只需要知道调用的方法异常就可以,这个时候需要转译异常.
4、改抛为运行时异常:编译异常出现的时候,你可能需要告诉调用方或者需要中断程序,这个时候都可以抛运行时异常。
5、记录并消耗异常:一些不严重的异常如果不需要处理,不会影响程序执行,可以制作记录并且消耗掉。
四、推荐文章
在查阅相关资料的时候发现了一篇特别好的文章,这里做个分享Java异常处理终结篇——如何进行Java异常处理设计 - CSDN博客
网友评论