编译Java Servlet代码时,出现以下错误...

in javax.servlet.http.HttpServlet; overridden method does not throw org.xml.sax.SAXException


在重写的doGet()函数中,我正在使用JAXP处理XML,这显然需要我处理SAXExceptions。但是,当我将“ SAXExeption”添加到我希望我的doGet函数处理的异常类型列表中时,会出现上述错误。如何获取doGet函数来挂起SAXExcpetions?

预先感谢您的所有帮助!

最佳答案

您不能声明一个覆盖方法,该方法将抛出被覆盖的方法未引发的检查异常。换句话说,由于HttpServlet.doGet()被声明为引发IOException和ServletException,因此您不能在doGet方法的throws子句中使用任何其他异常类型。

但是,您可以将要获取的SAXException打包为ServletException来解决此问题:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException {
    try {
        JAXP.possiblyThrowASAXException();
    } catch (SAXException e) {
        throw new ServletException("JAXP had a parsing failure", e);
    }
}

09-05 10:31