异常与中断的区别

来源:互联网 发布:linux禁止ping ip地址 编辑:程序博客网 时间:2024/05/21 06:47

Mary Campione在The Java Tutorial(Java指南)写到,“一个异常是在一个程序执行过程中出现的一个事件,它中断了正常指令的运行。”
American Heritage Dictionary解释,一个错误是“偏离了可接受的代码行为的一个动作或一个实例。”
那么偏离(deviation)和中断(disruption)有什么不同呢?我们可以这么来解释:如果你正在一条路上驾驶,有人截住了你,这就是中断。如果车发动不了了,那就是偏离(除非是我的车,我们认为这种情况是normal的)。[1]

 

异常和错误基本上是一样的,区别在于错误是可以预见到并且知道如何处理的情况而异常是指出错了但不知如何去处理的情况。或者说:如果知道出错后该怎么处理就可以直接处理该错误,否则就将其作为一个异常抛出(在知道如何处理地方捕捉该异常然后进行处理)。

 

以前写程序一般是通过返回错误代码或者设置错误标志位为实现,但是这里有个问题,就是你不能保证用户会去检验这个返回代码或者错误标志位,这样的话程序出错了还继续运行,最终是离出错的地方越来越远。而异常其实就是一个错误信息,如果有异常,而该异常没有被任何程序捕捉的话,程序就会中断。可以更好的让客户诊断错误。  [2]

 

异常是原子性,错误是可以没有,可以不rallback
在不可预短的,具有原子性操作的,可用try
否则,我删文件删了一半,就出现异常。。。
那我这个文件会rallback,还可以打开


错误的处理方式有很多种,
1。中间值,继续执行
2。不执行,提示错误
 3。部分执行,给出每一步的提示


异常产生错误,异常的处理只有一种:
    要么全部执行成功,要么全部不执行

在正常的的情况下,发生了不可预知的事情,视为异常. 异常的前置条件是正常
错误的假设有两种,一种为正常, 一种为不正常,即错误 [3]

 

 

[1]Java基教--异常与错误区别 Error and Exception (http://dev.csdn.net/article/34/34162.shtm)

[2]异常与错误有什么区别?(http://topic.csdn.net/t/20041010/09/3439259.html)

[3]对错误和异常的区别的理解(http://blog.csdn.net/cxzhq2002/archive/2009/03/19/4004815.aspx)

 

原创粉丝点击