try中定义的局部变量在finally中找不到

try中定义的局部变量在finally中找不到

Connection conn = null;
Statement statement = null;
try {
conn = getConnection2();
String sql = “insert into userinfo(username,password)values(‘avas1’,’dsfad’)”;
statement = conn.createStatement();
statement.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
statement.close();
conn.close();
}
如果我将conn 和statement放到try里声明,那么finally就会提示找不到这两个变量
这是为什么?

解答:

和try catch没有关系,只要是块,就符合这个规则。包括if for while switch等。
一对花括号代表着一个作用域,当在try的花括号里面定义变量时,该变量只能在try{}中才有效,可以理解为该变量只属于try,finall{}里是找不到该变量的。
如果在try{}catch{}finally{}的外面定义变量,可以理解为是属于他们共有的。

猜你喜欢

转载自blog.csdn.net/qq_20936333/article/details/81062966