本文共 1825 字,大约阅读时间需要 6 分钟。
public List做到两点:throws SQLException和throw(e); 此时CategoryAction接收到CategoryService中的list方法抛出的异常:list()throws SQLException{ Connection conn=DB.createConn(); String sql="select * from category_"; PreparedStatement ps=DB.prepare(conn, sql); List categories=new ArrayList (); try { ResultSet rs=ps.executeQuery(); Category c=null; while(rs.next()){ c=new Category(); c.setId(rs.getInt("id")); c.setName(rs.getString("name")); c.setDescription(rs.getString("description")); categories.add(c); } } catch (SQLException e) { e.printStackTrace(); throw(e);//向外抛出异常 } DB.close(ps); DB.close(conn); return categories; }
public String list()throws Exception{ categories=categoryService.list(); return SUCCESS; }注意加:throws Exception CategoryAction中的throws Exception继续向外抛异常,之后struts.xml接住
其中 <exception-mapping result="error" exception="java.sql.SQLException"/> java.sql.SQLException异常有对应的result,找到result(error.jsp),显示异常的界面 在error.jsp中利用[Debug]可以看到,栈值中有exception,详细为: exception java.sql.SQLException: Table 'bbs2014.category_' doesn't exist 友好界面里最好写“出错了,请联系管理员”,要比“请稍后再试”好多了 全局的异常处理: 如果需要收集的异常过多,那么需要全局的异常处理机制,在struts中这样配置:/admin/{1}-{2}.jsp /admin/{1}-{2}.jsp /admin/{1}-{2}.jsp /error.jsp
struts中支持声明式的异常处理指的是,要是有异常,就向外抛,最后会给一个统一的接口,然后让你在特定的页面做出处理。/error.jsp /admin/{1}-{2}.jsp /admin/{1}-{2}.jsp /admin/{1}-{2}.jsp
转载请注明出处: