第四节:抛出异常
2015-06-01 20:24
253 查看
实现自己的方法时,如果方法无法完成方法名指定的任务,就应抛出一个异常,抛出异常时要考虑两个问题。
第一个问题是抛出什么Exception派生类型。应选择一个有意义的类型。要考虑调用栈中位于高出的代码,要知道那些代码如何判断一个方法失败,以便执行一些得体的恢复代码。可直接利用FCL中定义好的一个类型,但FCL中也许找不到一个和你想表达的意思完全匹配的类型,所以可能需要定义自己的类型,只要它最终从Exception派生就好。
如果希望定义一个异常类型层次结构,强烈建议让这个浅而宽,以创建尽量少的基类。原因是基类的作用是将大量的错误当做一个错误,而这通常是危险的。基于同样的考虑,永远都不要抛出一个Exception对象,抛出一起类型时也要特别谨慎。
第二个问题是向异常类型的构造器传递什么字符串消息。抛出异常时,应包含一条字符串消息,详细说明方法为什么没有完成任务。如果异常被捕捉到并进行了处理,用户就看不到该字符串消息,但是,如果异常成为一个未处理的异常,消息通常会被写入日志。未处理的异常意味着程序存在一个真正的bug,开发人员必须修复该bug。最终用户没有源代码或能力去修复bug并重新编译程序。实际上,这个字符串消息最终不应该向用户显示,所以,字符串消息可以包含非常详细的技术细节,以帮助开发人员修正代码。
另外,由于所有开发人员不得不讲英语,所以通常不必本地化异常字符串消息。但是,如果要构建一个非英语开发人员使用的类库,就可能要本地化字符串消息。微软以本地化FCL抛出的异常消息,因为全世界的开发人员都要用这个类库。
相关文章推荐
- Date类
- Opencv 2.4.9在Ubuntu下的配置安装
- 跟着实例学习ZooKeeper的用法: 计数器
- VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法
- 从链接、存储的角度去理解编译器对关键字的处理(static、extern等)
- ISLR线性回归笔记
- 教你如何查看java错误
- 使用预处理语句实现插入删除修改数据
- 好感?喜欢?爱?我不知道,我到底对你是哪种?可是你一直在我心底,从未离开
- php学习第二章:字符串处理函数(一)
- 我没有嘲笑别人的权利,只能无力的嘲笑自己。
- 打印菱形---命令行方式
- linux程序设计——shell程序设计(第二章)
- poj 1741 树的点分治
- hdu - 2266 How Many Equations Can You Find (简单dfs)
- 51--步进电机驱动代码
- TortoiseSVN中Branching和Merging实践
- 集合框架(六)探究如何使用以及何时使用ArrayList或LinkedList来存储元素
- 个人开发工具汇总
- 集合框架(五)使用Comparable接口和Comparator接口来比较元素