当前位置:  开发笔记 > 编程语言 > 正文

在Java中创建Exception的一般规则是什么?

如何解决《在Java中创建Exception的一般规则是什么?》经验,为你挑选了4个好方法。

我遇到过这两种情况:

创建过多的自定义异常

使用太多的一般Exception类

在这两种情况下,项目都开始运行,但很快就成了维护(和重构)的开销.

那么关于创建自己的异常类的最佳实践是什么?



1> Josh Brown..:

Java专家写了一篇关于Java中的异常的文章,其中列出了一些创建例外的"最佳实践",总结如下:

不要编写自己的异常(有很多有用的异常已经是Java API的一部分)

编写有用的异常(如果您必须编写自己的异常,请确保它们提供有关所发生问题的有用信息)



2> 小智..:

不要做我公司的开发人员做的事情.有人创建了[sic] InvalidArguementException,它与java.lang.IllegalArgumentException相似,现在我们在(字面上)数百个类中使用它.两者都表明方法已被传递为非法或不恰当的参数.谈论浪费......

Joshua Bloch在" 有效Java编程语言指南" [最新实践的第一手段] 第8章中介绍了这一点.例外 项目42:支持使用标准异常.这是他说的一点,

重用先前存在的异常有几个好处.其中最重要的是,它使您的API更容易学习和使用,因为它符合程序员已经熟悉的既定惯例 [ 我的重点,而不是Bloch的 ].紧接其后的是,使用您的API的程序更容易阅读,因为它们不会被不熟悉的异常所混淆.最后,更少的异常类意味着更小的内存占用和更少的加载类所花费的时间.

最常见的重用异常是IllegalArgumentException.当调用者传入一个值不合适的参数时,这通常是抛出的异常.例如,如果调用者在表示某个操作要重复的次数的参数中传递一个负数,则抛出此异常.

也就是说,你永远不应该抛出异常.Java有一个精心挑选,多样化且目标明确的一系列内置异常,涵盖大多数情况描述发生的异常,以便您可以纠正原因.

对那些必须在将来维护代码的程序员友好.



3> Landon Kuhn..:

我的经验法则是当客户端(调用者)可能合理地想要做一些不同的事情时,根据抛出的异常类型,保证附加的异常类型.但是,通常不需要额外的异常类型.例如,如果调用者正在编写代码

try {
     doIt();
} catch (ExceptionType1 ex1) {
     // do something useful
} catch (ExceptionType2 ex2) {
     // do the exact same useful thing that was done in the block above
}

那么显然不需要额外的异常类型.我经常看到(或者被迫编写)这样的代码,因为被调用的代码在创建新的异常类型时过于热心.


我知道这个问题已经有7年了,java 7当时还没有出现,但它仍然会出现在谷歌中...所以...使用java 7你可以合并这两个博客.

4> jjnguy..:

如果我找不到一个具有描述错误类型的名称的异常,那么我自己制作.

这是我的规则 - 拇指.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有