关于异常
1、是抛出异常还是返回一个特殊值以标志错误。
2、在什么样的层次处理异常
这两个问题都不是绝对的,根据实际问题具体分析
第一个问题,一般来讲使用异常比使用错误代码好,但是实际情况不同还是要区别对待的。在这个问题上,我觉得应该是以下几个判断准则:
1、方法要提供的功能是什么?
要试图去判断你所提供的方法所使用的场合,IndexOf方法经常是仅仅被用来判断列表中是否存在某个值的,就这一点而言,找不到字符是不应该抛出异常的;而一个List.Delete(Int32 i)就应该被设计成void Delete(Int32 i),找不到i时报错而不是Boolean Delete(i)去返回一个false表示删除失败。
2、方法的使用者是否会预期异常发生?
一些较少发生的错误,比如说磁盘空间不足,内存分配错误,等等,一定要以抛出异常的方式来处理。
第二个问题,则需要你明确你所定义的类的职责
在你所定义的类的职责范围内,是否需要向外隐瞒异常的发生。例如用户界面应该向外隐瞒所有的异常而以消息框替代,而你的FileAnalyzer要打开一个文件而发现文件名不正确却并不是它的错,那么,它要做的只是抛出异常,而在你觉得需要对外隐瞒的发生的地方处理异常,如果是用户输入文件路径去打开文件,那就报给用户,如果是你程序内部的暗箱操作,那就看你的具体意图了。