系统总有出现异常的时候,那么出现异常时应该如何处理?

 

一直以来,我都以为这么处理就足够的:

  • 在日志中打印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);
    }

}
RequestDemoServlet

相关文章:

  • 2021-09-04
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
  • 2022-12-23
  • 2021-07-12
猜你喜欢
  • 2022-12-23
  • 2022-01-10
  • 2022-12-23
  • 2021-08-22
  • 2022-12-23
  • 2022-01-18
  • 2021-07-31
相关资源
相似解决方案