Java如何合理的设计异常?

译注】

        异常设计一直让我头疼不已,《Thinking in Java》中有关于异常设计的内容,但并不是很详细;《Effective Java》中应该有详细介绍吧,但一直没有精力来啃此书。八天前在JavaWorld电子杂志上发现这篇八年前的文章,有一种相见恨晚的感觉,一看作者竟是Bill Venners(前段时间拜读他的《深入Java虚拟机》),遂惶恐译之。

 

【摘要】

        本文是设计技术专栏文章,讨论有关异常设计的问题。本文关注何时使用异常,并举例演示异常的恰当使用。此外,本文还提供一些异常设计的基本原则。

 

        五个月前,我开始撰写有关设计对象的文章。本文是设计文技术系列文章的延续,讨论了有关错误报告和异常的设计原则。我假设读者已经知道什么是异常,以及异常是如何工作的。你若想回顾一下异常方面的知识,请阅读本文的姐妹篇《Java异常》。

 

【异常的好处】

        异常带来诸多好处。首先,它将错误处理代码从正常代码(normal code)中分离出来。你可以将那些执行概率为99.9%的代码封装在一个try块内,然后将异常处理代码(这些代码是不经常执行的)置于catch子句中。这种方式的好处是,正常代码因此而更简洁。如果你不知道如何处理某个方法中的一个特定错误,那么你可以在方法中抛出异常,将处理权交给其他人。如果你抛出一个检查异常(checked exception),那么Java编译器将强制客户端程序员(cilent programmer)处理这个潜在异常,或者捕捉之,或者在方法的throws子句中声明之。Java编译器确保检查异常被处理,这使得Java程序更为健壮。

 

【何时抛出异常】

        异常应于何时抛出?答案归于一条原则:“如果方法遇到一个不知道如何处理的意外情况(abnormal condition),那么它应该抛出异常”。不幸的是,虽然这条原则易于记忆和引用,但是它并不十分清晰。实际上,它引出了另一个的问题:什么是意外情况?这是一个价值6.4万美元的问题。是否视某特殊事件为“意外情况”是一个主观决定。其依据通常并不明显。正因为如此,它才价值不菲。

 

        一个更有用的经验法则是:“在有充足理由将某情况视为该方法的典型功能(typical functioning )部分时,避免使用异常”。因此,意外情况就是指方法的“正常功能”(normal functioning)之外的情况。请允许我通过几个例子来说明问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值