鉴于此代码:
String test() {
try {
return "1";
} finally {
return "2";
}
}
Run Code Online (Sandbox Code Playgroud)
语言规范是否定义了调用的返回值test()?换句话说:每个JVM中它总是一样的吗?
在Sun JVM中,返回值是2,但我想确定,这不依赖于VM.
如果我有一个返回某些东西的方法,比如
public DataTable ReturnSomething()
{
try
{
//logic here
return ds.Tables[0];
}
catch (Exception e)
{
ErrorString=e.Message;
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生编译器错误,显然是因为catch{}块不返回任何内容.
所以当我有返回值的方法时,我不使用try-catch块,这是一种不好的做法.如果有错误,我想将错误字符串设置为该错误.但是我还需要一个返回值.建议吗?