系统总有出现异常的时候,那么出现异常时应该如何处理?
一直以来,我都以为这么处理就足够的:
- 在日志中打印Exception的堆栈信息,以便排查原因
- 反馈给用户系统xxx出现问题
package com.nicchagil.util.requestlogger; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; public class RequestDemoServlet extends HttpServlet { private final Logger logger = Logger.getLogger(RequestDemoServlet.class); public RequestDemoServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ResultSet rs = null; PreparedStatement pstmt = null; Connection conn = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( "jdbc:oracle:thin:@hostname:port:sid", "username", "password"); pstmt = conn.prepareStatement("select * from t_xxx t where t.id = ? "); pstmt.setString(1, "paramter"); rs = pstmt.executeQuery(); while (rs.next()) { System.out.println("'" + rs.getString("result1") + "' - " + "'" + rs.getString("result2") + "'"); } } catch (ClassNotFoundException e) { // Print exception logs logger.error("Failed to query xxx", e); // Prompt that system error response.getWriter().write("Failed to query xxx!"); } catch (SQLException e) { // Print exception logs logger.error("Failed to query xxx", e); // Prompt that system error response.getWriter().write("Failed to query xxx!"); } catch (Throwable t) { // Print exception logs logger.error("System error", t); // Prompt that system error response.getWriter().write("System error!"); } finally { try { if (rs != null) { rs.close(); rs = null; } if (pstmt != null) { pstmt.close(); pstmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { // Print exception logs logger.error("System error", e); // Prompt that system error response.getWriter().write("System error!"); } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }