Java的基本理念是“结构不佳的代码不能运行”
- 1).概念
不再需要在每个方法调用处进行检查,只需要在一个地方处理错误,即所谓的异常处理程序,这种方式不仅节省代码,而且把“描述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。
- 2).基本异常
异常使得我们可以把每件事都当做一个事物来考虑,而异常可以看护着这些事物的底线。如果遇到问题,它们将不允许程序沿着其正常的路径继续走下去。
- 3).捕获异常
抛出的异常必须在异常处理程序中得到处理,针对不同的异常,会有相应的处理程序,紧跟在try块之后
Java只支持终止模型,另一种为恢复模型,虽然看起来很美好,但检查的繁琐及之后的恢复操作的困难,使得程序猿最终放弃。
- 4).创建自定义异常
继承已有的功能相近的Exception派生类,可以使用默认构造器,也可以使用作为你一个字符串为参数的构造器。
- 5).异常说明
java鼓励人们告知客户端程序猿某个方法可能会抛出异常,然后客户端程序猿就可以进行相应的处理,这就是异常说明。它属于方法声明的一部分,紧跟在形式列表之后。
- 6).捕获所有异常
- 7).Java标准异常
Throwable对象可以分为两种类型:Error用来表示编译时和系统错误,Exception是可以被抛出的基本类型。特例是RuntimeExcetion,它代表的是编程错误,代表无法预料的错误,比如你控制范围之外的null引用。
- 8).使用finally进行清理
- 9).异常的限制
- 10).构造器
- 11).异常匹配
异常匹配的意思,是catch(E e)会捕获E以及所有从它派生的异常,所以如果方法里加上更多派生类异常的话,只要捕捉基类异常,代码就不需要更改。
- 12).其他可选方式
- 13).异常使用指南
在恰当的级别处理问题,解决问题并且重新调用产生异常的方法,进行少许修补,然后绕过异常发生的地方继续执行,用别的数据进行计算,把当前事情做完,然后异常抛到高层,终止程序,进行简化
- 14).总结
异常处理的优点之一就是使得你可以集中精力处理你要解决的问题,而在另一处处理一系列代码产生的错误。
问答
-
请对比Exception和Error,另外,运行时异常与一般异常有什么区别?
Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成部分。 -
Exception又分为可检查异常和不检查异常
可检查异常在源代码里必须显式地进行捕获处理,这是编译器检查的一部分。(IOException等)
不检查异常就是所谓的运行时异常,类似于NullPointException、ArrayIndexOutOfBoundsException之类,通常是可以编码避免的逻辑错误(RuntimeException NullPointException,ClassCastException)
知识扩张
- 1.尽量不要捕获类似Exception这样的通用异常,而是应该捕获特定异常
- 2.不要生吞异常
网友评论