【问题标题】:Sending a class to the main class from a class从一个类发送一个类到主类
【发布时间】:2015-09-28 13:05:17
【问题描述】:

我的代码当前设置为具有 3 个类文件,main 和 tradeShip。 tradeShip 收到了另一个类文件 playerShip。在 tradeShip 代码中,我需要将 playerShip 发送回 main。代码如下:

public class tradeShip() {
  public void sell(playerShip player) {
    //unimportant code
    main.saveGame(player);
  }
}


public class main() {
  public void saveGame (playerShip player) throws IOException {
    //code that deals with writing to text files
  }
}

然而,这给了我一个错误 main.saveGame(player);它说“未报告的异常 IOException;必须被捕获或声明为抛出”

我不确定到底发生了什么,任何帮助将不胜感激!

【问题讨论】:

  • 对于初学者,请去掉类声明中的 ()
  • 你需要阅读检查异常。
  • 这不可能是您的实际代码...类的声明中没有括号。至于您的实际问题,您的saveGame 方法声明它可以抛出IOException。因为这是一个已检查的异常,所以无论您调用saveGame,都需要要么 提供一个try-catch 块来处理错误,或者还需要在方法签名中声明它会抛出相同的异常。
  • 按照惯例,类名也以大写开头。

标签: java class object methods ioexception


【解决方案1】:

saveGame 抛出异常(错误) 您必须捕获并处理它:

try {
    main.saveGame(player); // throw exception
} catch (IOException e) {
    //some error processing
    e.printStackTrace();
}

或声明卖出也抛出它以在上层捕获和处理它

 public void sell(playerShip player) throws IOException {

【讨论】:

    【解决方案2】:

    在 saveGame 方法的签名中,您将抛出一个未在该方法主体中引发的 IOException。所以也许你必须删除它,因为你可能已经在任何 catch 子句中管理它。

    此外,只是为了澄清......所有类名都必须大写(这是java编程的一个很好的规则之一)并且你正在谈论的方法不接收java类,而只是一个实例对象类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多