Java:在Driver类中由Worker类抛出的Catch异常

时间:2013-02-24 06:06:22

标签: java exception-handling

我正在做家庭作业(Hangman)。它已经完成,但我需要添加一个例外并且遇到困难。这是明天到期的,我仍然没有听到我的导师的消息,所以当我继续等待时,我想我会在这里发帖。作业要求:

  

public boolean guessCharacter(char guess)throws Exception - 此方法   返回给定字符是否是关键短语的一部分。如果   猜到的字符是有效的,那么这个方法应该返回true,false   除此以外。如果已经猜到了猜测,你应该抛出异常   之前(可以通过调用它的代码来处理)   法)。

我假设我需要在worker类方法中抛出异常并在调用该方法的worker类中处理它。我搜索了SO并发现了这个:

  

在GUI和工作中保留对工作者的引用添加   试着抓。在catch中为变量分配异常并添加一个   得到它。在你的GUI中,当你的工人完成后,只需检查是否   工人是否有例外。

这看起来像我需要做的,但我不确定如何实现它。我会喜欢一个代码示例。这是我到目前为止( guessedLetters 是一个集合):

public boolean guessCharacter(char guess) throws Exception
{   
    // Reset index
    if (index == keyPhrase.length())
        index = 0;

    // Determine if guessed letter is part of word
    if (guess == keyPhrase.charAt(index))
    {
        isValid = true;
        boardArray[index] = guess;  // If it is, place it correctly in array
        try {
            // SOME TYPE a = guessedLetters.add(Character.toString(guess));
        } catch (Exception e) {
        //  a = not sure what to do here;
        }
    } else
        isValid = false;

    index++;

    return isValid;
} 

应该注意的是,我根据单词的长度多次调用此方法来检查用户对单词中每个字母的猜测。我确信有一种更优雅的方式,我只是没想出来。我也不确定在驱动程序类中使用布尔结果有什么用处。

提前致谢!

1 个答案:

答案 0 :(得分:3)

你不应该在尝试的情况下捕获异常,而是抛出异常。

由于这是作业,这是指导而不是实际的代码:

首先,检查该集以查看该字母是否已被猜到。如果它已经存在于集合中,则抛出异常(throw new Exception("That letter has already been guessed!")。否则,将字母添加到集合中,并照常继续。

正如您的作业所指出的,此异常将“由调用此方法的代码处理”。您所演示的guessCharacter方法中所有您负责的是在需要时抛出适当的异常(由于猜测重复)。