我有一个类应该包含在某些输入文件中找到的字符串。合同是该文件包含多个条目(由 # 个字符分隔),准确地说:该文件中至少应包含两个条目。现在我可以这样做:public MyWrapper(List<String> fileEntries) { if (fileEntries.size() < 2) { throw new IllegalArgumentException("Not enough entries ... }或者我可以这样做:public MyWrapper(List<String> fileEntries) { this.firstEntry = fileEntries.get(0); this.secondEntry = someMethodThatMergesAllRemainingEntries(fileEntries);第二部分会在某个时刻抛出 ArrayIndexOutOfBound 。我的问题是:Java 标准库中是否有一些可以视为指导的先例?(类似于 Java 标准库调用requireNonNull(),它告诉我们对于空参数可能更喜欢抛出 NPE 而不是 IllegalArgumentException)。注意:我并不是在问“什么会更好”,双方都有各自的优点和缺点(我有点倾向于选择选项 1,因为它更短)。
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
#1 有很多先例。
例如,使用描述性消息(包括有问题的索引和数组大小)执行其自己的显式边界检查和抛出,而不是让底层数组访问因自己的异常而失败(在本例中恰好ArrayList
是,但这不是重点)。IndexOutOfBoundsException
IndexOutOfBoundsException
在大多数情况下,我个人会选择#1 而不是#2,主要是因为它允许我更加明确并提供清晰的(呃)异常消息。
添加回答
举报
0/150
提交
取消