在service方法里 throw抛出一个异常, 然后再方法声明上加上throws:
public Listlist() 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; }
在调用list方法的action里 throws, 这样就不用try catch而是由struts2处理:
public String list() throws Exception{ categories=categoryService.list(); return SUCCESS; }
struts.xml里如何配置?
/admin/index.html /admin/{1}_{2}.jsp /admin/{1}_{2}.jsp /error.jsp /admin/exception.jsp
service里的sql语句改成错误的, 这样在调用页面的时候, 就会显示error.jsp.
下面是异常处理最常用的方法:
1. 配置新的package, global results, global-exception-mappings, 自己的action的包继承异常包即可.
原理:::拦截器
/error.jsp /admin/index.html /admin/{1}_{2}.jsp /admin/{1}_{2}.jsp /admin/exception.jsp