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

我应该使用哪个Java异常?

如何解决《我应该使用哪个Java异常?》经验,为你挑选了3个好方法。

让我们假设我是一个完全懒惰的流浪汉,我不想投入我自己的异常类所需的几十个击键(它真的不是非常重要的使用它).但是,假装我在这里遵循良好做法,我想要一个最符合我情况的预先存在的做法.

问题:当我的类的构造函数在其参数中接收到一个在我在别处构建的给定列表中找不到的对象时,我需要抛出一个异常.

哪个异常类适合抛出?



1> Chris Jester..:

IllegalArgumentException



2> Andreas Pete..:

准确性获胜者: java.lang.IllegalArgumentException



3> Phil..:

IllegalArgumentException确实是答案,但我会说你的设计有问题.本质上,您的类不变量依赖于某个外部对象的状态,这违反了封装.如果不知道某些其他对象,就无法确定对构造函数的调用是否会成功,从而导致混淆且容易被误用的API.

如果您引用的列表是一个static final不可修改的List(请参阅参考资料java.util.Collections.unmodifiableList())并包含在相关类中,则此问题会有所缓解,但我仍然不太喜欢它.如果可能的话,更好的是将可接受的参数值封装在一个中enum,这将完全消除对异常的需要.我通常不喜欢构造函数抛出的异常.如果必须抛出异常,请改用工厂方法.

如果您无法使用无需外部列表的选项,则可能需要重新考虑您的设计.

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