-3

我正在制作一个迷你 Java 游戏,编译时出现错误:

error:invalid method declaration;return type requied
public init() throws Exception {
       ^

第一个版本是 public void init,但我不能那样做,因为我需要使用 try{..}catch(Malformed...) 或在编译时出现另一个错误(需要 catch blah blah)。

这是代码:

public void run() throws Exception{
try{
this.zz();
}catch(MalformedURLException me){
throw me;
}
this.zo();
}
4

3 回答 3

2

您忘记添加返回类型。由于您返回 0,我假设您要返回一个 int。因此,将您的标题更改为:

public int init() throws MalformedURLException

没有理由拥有throws Exception。要尽可能具体。

一般来说,方法的语法是:

访问修饰符public、protected、private返回类型原始、对象、void方法名

这是关于定义方法的 Oracle 教程。

此外,不确定这是否适用,但如果您只打算仅返回 0 或 1,例如,请考虑将您的方法标头更改为:

public boolean init() throws MalformedURLException
于 2013-07-26T11:45:13.233 回答
0
error:invalid method declaration;return type requied
public init() throws Exception {
      ^
// You are missing the return type 

您忘记将返回类型添加到方法声明中。每个 Java 方法都应该指定一个返回类型。如果它没有返回任何东西给调用者,那就做吧void。在您的情况下,它返回一个原语int,因此声明int为返回类型。

需要重新考虑您的代码:

// return type is int as you are returning primitive int `0`.
public int init() throws MalformedURLException {
    //...
    try{
     this.zx();
   }catch(MalformedURLException me){
    // log the Exception here
    // me.printStackTrace();
    // logger.error(... exception message ....);
    throw me;
    // in case you return 0 , in spite of the Exception 
    // you will never know about the exceptional situation
   }
   return 0;
 }

请参阅JLS 8.4

于 2013-07-26T11:40:56.987 回答
0

返回类型是强制性的。你必须提供一个。我猜是逃不掉的。

于 2013-07-26T11:41:31.433 回答