关于异常

1、是抛出异常还是返回一个特殊值以标志错误。

2、在什么样的层次处理异常

 

这两个问题都不是绝对的,根据实际问题具体分析

 

第一个问题,一般来讲使用异常比使用错误代码好,但是实际情况不同还是要区别对待的。在这个问题上,我觉得应该是以下几个判断准则:

    1、方法要提供的功能是什么?

    要试图去判断你所提供的方法所使用的场合,IndexOf方法经常是仅仅被用来判断列表中是否存在某个值的,就这一点而言,找不到字符是不应该抛出异常的;而一个List.Delete(Int32 i)就应该被设计成void Delete(Int32 i),找不到i时报错而不是Boolean Delete(i)去返回一个false表示删除失败。

    2、方法的使用者是否会预期异常发生?

    一些较少发生的错误,比如说磁盘空间不足,内存分配错误,等等,一定要以抛出异常的方式来处理。

 

第二个问题,则需要你明确你所定义的类的职责

    在你所定义的类的职责范围内,是否需要向外隐瞒异常的发生。例如用户界面应该向外隐瞒所有的异常而以消息框替代,而你的FileAnalyzer要打开一个文件而发现文件名不正确却并不是它的错,那么,它要做的只是抛出异常,而在你觉得需要对外隐瞒的发生的地方处理异常,如果是用户输入文件路径去打开文件,那就报给用户,如果是你程序内部的暗箱操作,那就看你的具体意图了。

posted on 2004-05-24 13:16  刘敏(Rustle Liu)  阅读(484)  评论(0编辑  收藏  举报