Classifying Exceptions
Author:Russell Gold
Translator:Leon·He
站在一定高度上看,一个系统检测异常的方法是非常有限的几种。而这其中又受限于异常的类型和即定的目标有关。我把异常分为三个类别。其实我已意识到了四种,但我不记得他们具体是什么了。
我使用的三种为:
程序逻辑错误
资源错误
用户错误
当程序检测到它获得不应该可能有的状态时,程序逻辑错误就会发生,比如说,读取了一个五个元素数组的第十个元素或者试图从一个空栈中退栈。它们通常会通过”assertions”被捕获并且趋向于使一部分程序不可用。像这种异常一般就是开发人员的事了,一般用户是无能为力的,除了停用发生了异常的功能并有向有关开发人员报告问题外。这就意味着了程序不必向用户区分这些异常,并且向用户显示的信息也只需要开发人员能看懂就可以了。(特别的,可以以”对不起!发生了系统错误!请与系统管理员联系!”作以标题)
资源异常发生于在程序运行过程中意外地失却对一些资源的控制上(比如说内存,磁盘空间,或者一个外设)。对于这类临时性的问题,用户是可以做些适当的努力。比如:他可以关闭其它运行的程序,清除些磁盘空间,插入网线等等。这就意味着显示给用户信息必须能被他所理解。同时,程序的功用可能在部分退化的情况下继续运行,因此需要在这些异常中判别哪些发生后资源已不再可用了。
用户异常发生于用户试图去操作那些程序并不支持的功能,而且通过用户界面也没有直接禁止。它也许并不应该引起一个异常。但却应该被程序所处理。程序也可以试图去猜测用户真正的操作意图。在这类问题中,使用异常来处理的最大的缺点就是检测多种错误很困难。
就我所知,所有的异常都应该属于这些类别当中的一个,还有人意识到我所忽略的其它类别吗?Tell me!
Leon·He
Broaden Gate(ShenZhen) Corp
E-Mail:English98@tom.com
Do things as right as possible.