private void readExecuteCommand() {
        String[] cmnd = _inp.nextLine().trim().split("\\s+");
        try {
            if (isInteger(cmnd[0])) {
                if (!_playing) {
                    throw error("no game in progress.");
                }
                if (cmnd.length >= 2) {
                    int r = Integer.parseInt(cmnd[0]);
                    int c = Integer.parseInt(cmnd[1]);
                    makeMove(r, c);
                    saveMove(r, c);
                } else {
                    throw error("syntax error in '<move>' command");
                }
            } else {
                executeCommand(cmnd);
            }
        } catch (GameException e) {
            reportError(e.getMessage());
        } catch (ArrayIndexOutOfBoundsException e) {
            if (isInteger(cmnd[0])) {
                reportError("syntax error in '<move>' command");
            } else {
                reportError("syntax error in '%s' command", cmnd[0]);
            }
        } catch (NumberFormatException e) {
            reportError("syntax error in '%s' command", cmnd[0]);
        }
    }