【问题标题】:Java: Catch exception thrown by Worker class in Driver classJava:在Driver类中捕获Worker类抛出的异常
【发布时间】:2013-02-24 06:06:21
【问题描述】:

我正在做家庭作业(刽子手)。它已经完成了,但是我需要添加一个异常并且遇到了困难。明天就要到期了,我还没有收到导师的消息,所以我想我会在继续等待的同时在这里发帖。作业需要这样:

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

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

在您的 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;
} 

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

提前致谢!

【问题讨论】:

  • 您可以通过在catch 块内执行throw e 重新抛出异常。

标签: java exception-handling


【解决方案1】:

您不应该在尝试的地方捕获异常,而是抛出异常。

因为这是作业,所以这是指导而不是实际代码:

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

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

【讨论】:

  • 齐塞默,谢谢。这是我最初开始做的事情,但正如预期的那样,当我抛出异常时,程序停止了。如果异常应该在 main() 中处理,我不知道如何让它这样做。
  • @stef2dotoh - 您尝试在上面包含的 try/catch 逻辑 - that 属于您的 main 方法 - 再次,正如任务。
  • ziesemer(不知道为什么 @ 不再适合我了),谢谢!我在任何地方都找不到关于在一个类中抛出异常并在另一个类中处理它的任何文档,甚至在我的教科书中也找不到。你帮了大忙!
猜你喜欢
  • 2012-02-09
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 2011-08-21
  • 1970-01-01
相关资源
最近更新 更多