如果房间不存在或已预订,则引发异常



我正在从事一个分配工作,我正在尝试对用户进入房间时的例外,并且房间不存在或已保留。我对实际放置代码块的位置感到困惑,并感谢任何帮助。

房间课

 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);
}
}

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

rooms.get(i)

因此,在房间课中,您需要定义房间的方法

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

这样做,您将永远无法抛出新的例外,因为它会到达外部。可能的解决方法是检查索引是否为-1,然后进行异常。更好的方法是直接在循环内部返回并在外面抛出异常。为此,您将必须编码布尔值非静态方法,该方法将检查是否不保留。

// 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();
}

最新更新