您的位置:首页 > 其它

try{}catch{}finally{}的逻辑错误问题

2010-06-22 22:47 344 查看
package fo;

import hibernate.HibernateSessionFactory;

import org.hibernate.Session;

public class TestTry
{
static
{
//D
try
{    //A
Session session=HibernateSessionFactory.getSession();   //(1)
UserInfo userInfo=new UserInfo();
session.save(userInfo);
}
catch(Exception e)
{    //B
session.close();    //(2)
System.out.println(e);
}
}
}


该程序错误。Errors:session cannot be resolved. 系统提示session对象未定义。原因是在try{}块中定义session产生的逻辑错误。假如程序在A处产生异常,则程序立刻跳转到B处,而不会执行(1),也就是不会定义session对象,所以会导致系统报错。

解决方法,把(1),也就是定义session的代码移至D处,try{}块的前面。

package fo;

import hibernate.HibernateSessionFactory;

import org.hibernate.Session;

public class TestTry
{
static
{
//D
try
{  //A
Session session=HibernateSessionFactory.getSession();   //(1)
UserInfo userInfo=new UserInfo();
session.save(userInfo);
}
catch(Exception e)
{  //B
System.out.println(e);
}
finally
{  //C
session.close();   //(2)
}
}
}


该程序错误。Errors:session cannot be resolved. 系统提示session对象未定义。报错原因同上,假如程序在A处产生异常,则程序立刻跳转到B处,而不会执行(1),而finally{}块无论如何都会执行,所以导致系统报错。

解决方法同上。

该错误不容易注意到,要特别留神。还有try{}块中不要包含过多的语句,catch异常要有针对性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session exception class