private boolean startGame(WordRequest wordRequest) {
        try {
            Word word = wordRepository.getRandom(wordRequest);
            game = new Game(word, wordRequest.complexity().attemptsCount());
            return true;
        } catch (NoSuchElementException e) {
            return false;
        }
    }

    public void startGameSession() throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
        out.println("Starting game session. \nWelcome to HangMan Game! Please review the commands \"help\"");
        while (gameSessionIsActive) {

            if (!reader.ready()) {
                continue;
            }

            StartParams startParams = new StartParams();
            HintParam hintParam = new HintParam();
            GuessParams guessParams = new GuessParams();
            HelpParams helpParams = new HelpParams();
            ExitParams exitParams = new ExitParams();

            JCommander jCommander = JCommander.newBuilder()
                .addCommand(startParams.command(), startParams)
                .addCommand(hintParam.command(), hintParam)
                .addCommand(helpParams.command(), helpParams)
                .addCommand(guessParams.command(), guessParams)
                .addCommand(exitParams.command(), exitParams)
                .build();

            String line = reader.readLine();
            if (line == null) {
                continue;
            }

            String[] cmds = line.split(" ");

            try {
                jCommander.parse(cmds);
            } catch (ParameterException e) {
                out.println("Something went wrong, try again or type \"help\"");
                continue;
            }

            if (jCommander.getParsedCommand().equals(startParams.command())) {

                WordRequest wordRequest = new WordRequest();
                if (startParams.complexity() == null) {
                    wordRequest.complexity(GetRandomEnum.random(Complexity.class));
                } else {
                    wordRequest.complexity(startParams.complexity());
                }

                if (startParams.category() == null) {
                    wordRequest.category(GetRandomEnum.random(WordCategory.class));
                } else {
                    wordRequest.category(startParams.category());
                }
                
                if (startGame(wordRequest)) {
                    out.printf("Category: %s%n", game.word().category());
                    out.printf("Complexity: %s%n", game.word().complexity());
                    printGameInterface();
                } else {
                    out.printf("Sorry. We do not possess enough data to start game with %s %s%n"
                        .formatted(wordRequest.complexity(), wordRequest.complexity()));
                }
                
            } else if (jCommander.getParsedCommand().equals(exitParams.command())) {
                gameSessionIsActive = false;
            } else if (jCommander.getParsedCommand().equals(helpParams.command())) {
                jCommander.usage();
            } else {

                if (game == null) {
                    out.println("Cannot call command while game is not running");
                    continue;
                }

                if (jCommander.getParsedCommand().equals(hintParam.command())) {

                    if (game.getGameStatus() == GameStatus.GOING) {
                        out.printf("Hint: %s%n", game.getHint());
                    } else {
                        out.println("First you need to start the game");
                    }

                } else if (jCommander.getParsedCommand().equals(guessParams.command())) {
                    handleGuessLetterCommand(guessParams);
                } else {
                    out.println("Unknown command");
                }
            }
        }

правильно ли я выделил startGame метод с блоком try catch и ркфлизовал или нет?