如果房间不存在或已经预留,则抛出异常

时间:2017-04-20 19:41:49

标签: java exception

我正在进行一项任务,并且我试图在用户进入房间时抛出异常,并且房间不存在或已经保留。我很困惑在哪里实际放置代码块,任何帮助都会受到赞赏。

房间等级

 public static int getRoomNumberIfExists(int roomNumber) throws RoomExistException{
    int index = -1;
    for (int i = 0; i < rooms.size(); i++) {
        if (rooms.get(i).getRoomNumber() == roomNumber) {
            index = i;
        }
    }
    return index;
}

异常类

public class RoomExistException extends Exception {

public RoomExistException(String message){
    super(message);
}
}

2 个答案:

答案 0 :(得分:0)

这样做,你永远无法抛出新的异常,因为它会到达外面。一种可能的解决方法是检查index是否为-1,然后抛出异常。更好的方法是直接在循环内使用return并将Exception抛出外部。 为此,您必须编写一个布尔非静态isAvailable方法,该方法将检查它是否未被保留。

// in class Room
...
boolean available = true;
...
public boolean isAvailable()
{
    return available;
}

最后,这里有新的静态方法。

public static int getRoomNumberIfExists(int roomNumber) throws RoomExistException
{
    for (int i = 0; i < rooms.size(); i++) 
    {
        Room room = rooms.get(i);
        if (room.getRoomNumber() == roomNumber && room.isAvailable()) 
        {
            return i;
        }
    }
    throw new RoomExistException();
}

答案 1 :(得分:0)

你有一个房间列表,或者至少是你发布时我们推断的内容:

rooms.get(i)

所以在Room类中你需要定义是否已经是房间的方法

if (rooms.get(i).isRoomNumberReserved()) {
    throw new RoomExistException("this room is already gone!");