首页 > 解决方案 > NetBeans/Java - 断点无法捕获异常

问题描述

在 NetBeans / Java 中 - 异常断点(用于 Throwable)不会捕获异常(Servlet 库代码中的 RuntimeException)。如果您进行繁琐的搜索,您可以找到一条紫色停止线,但无需查看变量的状态等。VS.NET 没有此类疾病 - 它会在您需要的地方停止,一切都很清楚。

这是 NetBeans 问题还是 Java 问题?如何摆脱断点问题?

标签: java

解决方案


在这里的示例将使您对 Servlet 中的异常处理有基本的了解

实际上放置一个断点你不能捕获一个servlet异常,因为它在到达终点之前发生然后你必须做这样的事情

当 servlet 生成错误时,开发人员可以通过各种方式处理这些异常

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/SampleExceptionHandler")
public class SampleExceptionHandler extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        exceptionProcessor(request, response);
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        exceptionProcessor(request, response);
    }

    private void exceptionProcessor(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        // Analyze the servlet exception
        Throwable throwable = (Throwable) request
                .getAttribute("javax.servlet.error.exception");
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        String servletName = (String) request
                .getAttribute("javax.servlet.error.servlet_name");
        if (servletName == null) {
            servletName = "Unknown";
        }
        String requestUri = (String) request
                .getAttribute("javax.servlet.error.request_uri");
        if (requestUri == null) {
            requestUri = "Unknown";
        }


    }
}

推荐阅读