异常捕获问题!!!

yongchengxi 2007-08-30 10:21:34
目的是通过在JSP中调用ListUser.java中的list方法实现下拉列表的值,是动态的从数据库中读出来的!

ListUser.java文件:
package ems.service;

import org.hibernate.Session;
import org.hibernate.Transaction;
import ems.hibernate.HibernateUtil;
import org.hibernate.Query;
import java.util.List;
import ems.hibernate.Usertable;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import org.hibernate.HibernateException;

public class ListUser {

public void list(HttpServletRequest request, JspWriter out)
throws Exception
{
HibernateUtil hibera=new HibernateUtil();
Session session=hibera.currentSession();
Transaction tx=session.beginTransaction();

String sql="from Usertable ";
Query query = session.createQuery(sql);
List list=query.list();

for(Iterator it=list.iterator();it.hasNext();){
Usertable user=(Usertable)it.next();

out.print("<html:option value='"+user.getName()+"'>"+user.getName()+"</html:option>");

}

tx.commit();
hibera.currentSession();
}
}



在JSP页面上!
<html:select property="uname">
<%
ListUser listuser=new ListUser();
listuser.list(request,out);
%>
</html:select>
在listuser.list(request,out)处总提示unreported exception java.lang.Exception; must be caught or declared to be thrown不知道怎么解决,等待高手指点!!!
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongchengxi 2007-08-30
  • 打赏
  • 举报
回复
没人回自己帮顶一下!
yongchengxi 2007-08-30
  • 打赏
  • 举报
回复
下拉列表怎么就没值呢?大家帮想想这样的思路不对吗?
yongchengxi 2007-08-30
  • 打赏
  • 举报
回复
感谢jamesfancy(边城狂人) 兄弟,异常问题确实没有了!
我不知道 throws Exception和throws RuntimeException有什么区别,因为下拉列表的值始终为空,读不出数据!郁闷着呢!
zhuoyu731 2007-08-30
  • 打赏
  • 举报
回复
up
边城狂人 2007-08-30
  • 打赏
  • 举报
回复
还有一个办法就是:
public void list(HttpServletRequest request, JspWriter out)
throws RuntimeException
{
     try {
......
} catch (Exception e) {
throw new RuntimeException(e);
}
}
边城狂人 2007-08-30
  • 打赏
  • 举报
回复
<%
ListUser listuser=new ListUser();
try {
listuser.list(request,out);
} catch (Exception e) {
%>
出错啦!!!
<%
}
%>
边城狂人 2007-08-30
  • 打赏
  • 举报
回复
因为出了异常,你的那段代码肯定没有执行完整,所以会丢失一些东西。比如没取到你要的列表。具体是为什么就要看你的异常输出的信息了。

Exception是编译器要检查的,一个方法如果抛出了Exception或者其子类(除RuntimeException外),编译器就要检查调用这个方法的地方是否有处理异常的try ... catch.. 语句,而且这里的catch一定要抓得住抛出来的这个异常;或者看调用者是否也将这个异常继续往外抛了。

但是如果是RuntimeException,编译器就不检查,只等运行的时候抛出来了。

如果你是用的第一种办法,那么在输出“出错了”之前,你可以用e.printStackTrace()把异常的堆栈打印出来(服务器控制台显示)。
如果你用的第二种方法,异常直接就会在控制台打印出来。

看看打印出来的东西,分析一下到底是什么原因抛出来的异常,再想办法解决它。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧