【问题标题】:Is needed Return value or not?, Working with try, catch and Finally: Java是否需要返回值?,使用 try、catch 和 finally:Java
【发布时间】:2013-09-18 23:49:03
【问题描述】:

我有这个代码:

private String Style(String Arg, Vector VctrClass) throws Exception {
  if (Verify that Arg is contained into VctrClass)) {
    return "Something";
  } else {
    throw new Exception("Error The argument required \""+Arg+"\" doesn't exist<br>");
  }
}

这是我的问题,我有这个方法:

public String GetStylString(String Arg) {
  try {
    return this.Style(Arg,OneVector);
  }
  catch(Exception e) {
    System.out.println(e.toString());
  }
  finally {
    return "";
  }
}

但是'我有这样的信息: void 方法不能返回值

然后我将方法更改为:

public String GetStylString(String Arg) {
  try {
    return this.Style(Arg,OneVector);
  }
  catch(Exception e) {
    System.out.println(e.toString());
  }
}

我有这样的消息: 此方法必须返回字符串类型的结果

【问题讨论】:

  • (a) 您没有从您发布的代码中收到有关“无效方法无法返回值”的消息:不存在void 方法。 (b) 你最好不要捕获异常并让它传播。 (c) 此时你当然不应该只抓住Exception

标签: java return try-catch-finally


【解决方案1】:

在println后面加上return,而不是finally:

public String GetStylString(String Arg) {
  try {
    return this.Style(Arg,OneVector);
  }
  catch(Exception e) {
    System.out.println(e.toString());
    return "";
  }
}

【讨论】:

    【解决方案2】:

    在 catch 之后而不是 finally 中添加 return:

    public String GetStylString(String Arg) {
      try {
        return this.Style(Arg,OneVector);
      }
      catch(Exception e) {
        System.out.println(e.toString());
      }
      return "";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 2015-02-15
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 2019-02-27
      相关资源
      最近更新 更多