Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们能够而且应该解决这个问题 只需返回null。或不捕获异常设置异常被忽略;getUser方法的调用方出错。坦率地说,我有点惊讶,这个问题得到了三张赞成票。IndexOutOfBoundsException未选中。你不需要声明它。这是真的,我放置了代码,以_Java - Fatal编程技术网

Java 我们能够而且应该解决这个问题 只需返回null。或不捕获异常设置异常被忽略;getUser方法的调用方出错。坦率地说,我有点惊讶,这个问题得到了三张赞成票。IndexOutOfBoundsException未选中。你不需要声明它。这是真的,我放置了代码,以

Java 我们能够而且应该解决这个问题 只需返回null。或不捕获异常设置异常被忽略;getUser方法的调用方出错。坦率地说,我有点惊讶,这个问题得到了三张赞成票。IndexOutOfBoundsException未选中。你不需要声明它。这是真的,我放置了代码,以,java,Java,我们能够而且应该解决这个问题 只需返回null。或不捕获异常设置异常被忽略;getUser方法的调用方出错。坦率地说,我有点惊讶,这个问题得到了三张赞成票。IndexOutOfBoundsException未选中。你不需要声明它。这是真的,我放置了代码,以防他想抛出一个自定义异常而不是越界异常,也许他想创建一个UserNotFoundException或其他什么,他会知道放在哪里。但是你的观察结果绝对值得注意。@JanDvorak添加了一个throws子句,明确地记录了这个方法将抛出一个Inde

我们能够而且应该解决这个问题

只需返回null。或不捕获异常设置异常被忽略;
getUser
方法的调用方出错。坦率地说,我有点惊讶,这个问题得到了三张赞成票。
IndexOutOfBoundsException
未选中。你不需要声明它。这是真的,我放置了代码,以防他想抛出一个自定义异常而不是越界异常,也许他想创建一个UserNotFoundException或其他什么,他会知道放在哪里。但是你的观察结果绝对值得注意。@JanDvorak添加了一个throws子句,明确地记录了这个方法将抛出一个IndexOutOfBoundsException;它不是必需的,但如果这实际上是一个与其他用户一起使用的API,它可能会有所帮助。@MarkrotVeel IIRC,正确的方法是在Javadoc中添加一个
@throws
子句,而不是在函数头本身中。@JanDvorak如果两者都可以,Eclipse甚至会抱怨(如果您启用了正确的设置)如果添加一个
抛出SomeRuntimeException
,而不使用
@抛出SomeRuntimeException
对其进行文档化;另一方面,它不会抱怨运行时异常。但是你是对的,没有更多的好处。只是-否。如果使用空对象模式,至少会公开一个公共的、只读的
NoSuchUser
实例,该实例可以与您返回的实例进行比较。或者在某个地方公开一个公共方法来检查
用户
实例是否是真正的用户。不要边走边编造。+1,特别是对于所谓的“旁白”,这在这种情况下非常有用。+1;请注意,有些异常(Scanner->InputMismatchException)是无法防止的。@JanDvorak我不知道这个特定的例子,但这时您必须捕获抛出的异常。在这个特殊的例子中,在绝大多数情况下(虽然不一定100%万无一失),首先防止抛出异常是非常简单的。Java社区更喜欢“请求许可”吗?我更喜欢Python,我总是更喜欢相反的“请求原谅”。+1,特别是因为我不得不笑“取决于你的信仰”:)Eclipse“抱怨”,因为每条路径都需要返回一些东西。所以他应该听一听(否则它将永远无法编译)。@MarkRotterveel OP写道,“Eclipse说必须返回用户”。这显然不是真的,您也可以抛出一个异常。最好解释Eclipse(或编译器)试图传达的内容,而不是简单地说不要听它。@Markrottveel这正是我在回答的其余部分中所做的。
private ArrayList<User> allUsers = new ArrayList<User>();

public User getUser(int index) {
    try {
        return allUsers.get(index);
    }
    catch(IndexOutOfBoundsException e) {
        // What should I return here?? Say that you want index 0 and no User
        // exists in the ArrayList allUsers, what should I then return? The
        // method needs a User to be returned 
    }
}
public User getUser(int index) throws IndexOutOfBoundsException { ... }
public User getUser(int index) throws IndexOutOfBoundsException {
    if(index >= allUsers.size()){
        throw new IndexOutOfBoundsException("User doesn't exist");
    }
    return allUsers.get(index);
}
return new User("nobody", ...);