在具有布尔返回类型的方法中捕获错误

时间:2016-03-19 02:58:58

标签: java

我正在尝试使用我已经给出的一些界面来实现Hex游戏。部分实现是通知用户和程序玩家试图将棋子放在已经包含一块的棋盘坐标(2D阵列列表)上。这被视为非法行为。因此,我试图在我的placePiece()方法中捕获异常,该方法为一些给定的坐标分配一个片段。 Piece是一个枚举类,包含三个元素:BLUE,RED,UNSET。最初我将电路板设置为UNSET。如果坐标包含其他任何Piece.UNSET,我需要该方法通知用户和系统一个PositionAlreadyTakenException。任何人都可以帮我这样做,因为此刻该方法只是跳到最后一次返回true;代码行?

以下是我的makeMove()方法的代码:

 public boolean placePiece(Piece colour, MoveInterface move) throws PositionAlreadyTakenException, InvalidPositionException, InvalidColourException
{
       int x = move.getXPosition();
       int y = move.getYPosition(); 

       try {
        if(this.board [y-1][x-1] == Piece.UNSET){
         this.board[y-1][x -1] = colour;  
         return true; 
        }

    } catch (Exception e){
        return false; 
    }    
    return true; 
}

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似的东西

public boolean placePiece(Piece colour, MoveInterface move) throws PositionAlreadyTakenException, InvalidPositionException, InvalidColourException
{
       int x = move.getXPosition();
       int y = move.getYPosition(); 

       try {
        if(this.board [y-1][x-1] == Piece.UNSET){
         this.board[y-1][x -1] = colour;  
         return true; 
        }

    } catch (Exception e){
        SOPL ("error" + e.getMessage(); 
    }    
    return false; 
}

答案 1 :(得分:0)

请尝试catch (Throwable t)

但它仍然是糟糕的风格。只有在特殊情况下才会抛出异常。已经声明的地方是应用程序逻辑。