我有一个try块,用于尝试运行数据库查询,还有一个finally块,用于释放数据库资源.如果数据库中不存在值,则返回null.
在try块中返回是个好主意吗?
一些示例代码:
try {
if (!jedis.exists(name)) {
return null; // Is this a good idea?
}
// Do database related stuff...
} catch (JedisConnectionException e) {
// Fix any problems that happen
} finally {
// Return all objects to pools and clean up
}
Run Code Online (Sandbox Code Playgroud)
在try块中返回是个好主意吗?
绝对:如果要返回的对象的准备完全在try块的范围内,则没有理由将其可见性扩展到其自然边界之外.
作为例证,这个
try {
ReturnType ret = ...
// Compute ret
return ret;
} catch {
...
} finally {
...
}
Run Code Online (Sandbox Code Playgroud)
比这更好
ReturnType ret = ...
try {
// Compute ret
} catch {
...
} finally {
...
}
return ret;
Run Code Online (Sandbox Code Playgroud)