需求说明:
完善控制台版五子棋,判断用户所下棋子的位置,是否已经存在棋子,如果已经存在,则抛出用户自定义异常,提示用户该位置已经有棋子。
实现思路:
创建用户自定义异常类GoBangException,该类继承自Exception父类,在该类定义一个无参的构造器和一个String类型形参的构造器,在该构造器调用父类有参构造器,并将该构造器中的String类型参数,传递给父类构造器。
在GoBang类中创建验证棋盘(x,y)处是否存在棋子的方法check(int x,int y),如何存在则抛出异常GoBangException对象。
在下棋方法playChess(int x,int y)中首先调用check(int x,int y),然后再进行正常的下棋。
实现代码:
public class GoBangException extends Exception { //自定义异常 public GoBangException(){ } public GoBangException(String message){ super(message); //调用父类有参构造器 } } private void check(int x,int y) throws GoBangException{ //验证棋盘(x,y)处是否已有棋子 if(board[x][y].equals("▇")){ throw new GoBangException("对不起该坐标["+x+"]["+y+"]已经有棋子"); } } public void playChess(int x,int y) throws ArrayIndexOutOfBoundsException{ //下棋 check(int x,int y) ; //验证棋盘(x,y)处是否已有棋子 board[x][y]="▇"; showBoard(); } public static void main(String[] args) { … try{ playChess(x, y); } catch(ArrayIndexOutOfBoundsException e){ System.out.println("所放棋子横纵坐标的范围在0~9"); } }