如何在java里面另一个方法返回方法的值

时间:2014-08-25 14:35:55

标签: java

我想问的可能看起来很愚蠢但是因为我是初学者,所以我敢问。 实际上我有一个返回字符串DataReader.getInstance().getData();的方法  我想用下面的字符串"data is assigned"替换此方法返回的值。

response.put("data is assigned", + result.get());

有没有什么好方法可以做到这一点,而不仅仅是简单地替换。问题是当我这样替换时:

String value = DataReader.getInstance().getData();
response.put(value + result.get());

它抱怨它需要尝试,捕获并且当我这样做时

try {
    String value =  DataReader.getInstance().getData();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

然后在trycatch中定义Value!但无论如何,我需要一个聪明的方式。 任何想法。

谢谢,

4 个答案:

答案 0 :(得分:4)

在try:

之外定义value
String value = null;
try {
    value =  DataReader.getInstance().getData();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 1 :(得分:1)

捕获异常的目的是对它做一些事情:记录它,用它来决定接下来要做什么,等等。通常,对于IOExceptions,您刚刚完成,您所能做的就是记录它。

抛出异常的原因是因为通常抛出异常的地方不是可以有意义地处理它的地方,抛出异常会让程序离开其当前上下文,异常证明是无效的,并且去另一个地方,程序可以捕获异常并做出适当的响应。

这里的例外情况告诉你,你要做的事情无法完成,所以继续下去真的没有意义。该例外允许您中止并重新组合。

您可以将示例更改为:

try {
    return DataReader.getInstance().getData();
} catch (IOException e) {
    e.printStackTrace();
}
return null;

但是调用者必须添加代码来检查返回null的情况。你最好抛出异常(中止当前操作),然后让异常在记录它们的中心点处理。那你的方法只是

String myMethod() throws IOException {
    return DataReader.getInstance().getData();
}

答案 2 :(得分:1)

有一些解决方案:

<强>第一

try {
    response.put(DataReader.getInstance().getData() + result.get());
} catch (IOException e) {
    e.printStackTrace();
}

<强>第二

try {
    String value = DataReader.getInstance().getData();
    response.put(value + result.get());
} catch (IOException e) {
    e.printStackTrace();
}

<强>第三

String value = null;
try {
    value = DataReader.getInstance().getData();
    response.put(value + result.get());
} catch (IOException e) {
    e.printStackTrace();
}

<强>第四

String value = null;
try {
    value = DataReader.getInstance().getData();
} catch (IOException e) {
    e.printStackTrace();
}
response.put(value + result.get());

第五

编写一个获取数据的方法:

private String getReaderData()
{
    try {
        return DataReader.getInstance().getData();
    } catch (IOException e) {
        //handle exception - throw the same, throw wrapper, return null
        throw new IllegalStateException("No Data Found in the reader");
    }
}

然后像这样使用它:

response.put(getReaderData() + result.get());

答案 3 :(得分:0)

除了现在的答案还有一个方法。

有时(例如在更复杂的情况下)定义新方法很方便,包装此try ... catch代码:

response.put(buildVale() + result.get());
...
private static String buildValue() {
    try {
         return DataReader.getInstance().getData();
    } catch (IOException e) {
         e.printStackTrace();
         throw new RuntimeException(e);
    }        
}