我正在进行一项任务,并且我试图在用户进入房间时抛出异常,并且房间不存在或已经保留。我很困惑在哪里实际放置代码块,任何帮助都会受到赞赏。
房间等级
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);
}
}
答案 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!");