【发布时间】:2014-06-03 01:51:46
【问题描述】:
有什么功能上的区别吗?
Connection c = null;
try {
c = getConnection();
c.doStuff();
} finally {
if (c!=null) c.close();
}
对比
Connection c = null;
c = getConnection();
c.doStuff();
try {
} finally {
if (c!=null) c.close();
}
对比
Connection c = null;
try {
c = getConnection();
} finally {
if (c!=null) c.close();
}
c.doStuff();
我觉得他们在所有情况下都会做同样的事情
【问题讨论】:
-
如果您知道
try背后的目的,那么您就知道答案了。如果你不把它放在你的try中,你就无法捕捉到异常。 -
你应该注意异常处理,简单的情况,尝试关闭你的数据库。
-
这三个示例的行为非常不同。在
try块之外发生的异常就是未处理异常的定义。在这种情况下,您的finally代码不太可能永远 运行。在最后一个示例中,连接将在您尝试使用它之前关闭。唯一正确的例子是第一个。
标签: java try-catch try-catch-finally finally try-finally