Java Struts2 IllegalArgumentException异常处理?

Java Struts2 IllegalArgumentException异常处理?,java,jsp,exception-handling,struts2,illegalargumentexception,Java,Jsp,Exception Handling,Struts2,Illegalargumentexception,我有一个无状态会话Bean: public CmcMapServerInfo getMapServerDetails() throws IllegalArgumentException, PersistenceException{ Query query; List<CmcMapServerInfo> resultList; CmcMapServerInfo mapServer = null; try{

我有一个无状态会话Bean:

public CmcMapServerInfo getMapServerDetails() throws IllegalArgumentException, PersistenceException{

        Query query;
        List<CmcMapServerInfo> resultList;
        CmcMapServerInfo mapServer = null;

        try{
            query = em.createNamedQuery("CmcMapServerInfo.getMapServerr");
            resultList = query.getResultList();
            mapServer =  resultList.get(0); // as only single row is there
        }catch(IllegalArgumentException e){
            System.out.println(" ILLEGAL CATCHED------------------------------------------------------------");
            throw e;
        }catch(PersistenceException e){
            System.out.println(" PERSISTENCE CATCHED------------------------------------------------------------");
            throw e;
        }
        return mapServer;
    }
这里的问题是
操作类中的
没有捕获来自bean的rethrown异常,因此struts2异常拦截器处理它

我已在struts.xml中配置了struts2异常处理:

<package name="cdot.oss.cmsat.conf.mapserver.struts" namespace="/"
        extends="struts-default">

        <interceptors>
            <interceptor-stack name="appDefaultStack">
                <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="appDefaultStack" />

        <global-results>
            <result name="exception">mapServer/pages/Exception.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception"
                result="exception" />
        </global-exception-mappings>


        <action name="getMapServerDetails"
            class="cdot.oss.cmsat.conf.struts.ConfigureMapServerAction" method="getMapServerDetails">

            <result name="success">mapServer/pages/ConfigureMapServerInput.jsp
            </result>
            <result name="input">mapServer/pages/ConfigureMapServerInput.jsp
            </result>
            <result name="error">mapServer/pages/Error.jsp</result>


        </action>

符合事实的
错误
mapServer/pages/Exception.jsp
mapServer/pages/ConfigureMapServerInput.jsp
mapServer/pages/ConfigureMapServerInput.jsp
mapServer/pages/Error.jsp
由于在Action类中未捕获异常,因此
异常
全局异常映射
将处理异常并显示
异常.jsp


为什么在
Action类中没有捕获到异常,即使它在Bean中捕获并在那里重新捕获?

如果在尝试结束时捕获Throwable,异常是否会出现在那里?@ThrashBean:Throwable在Action类或Bean中?@ThrashBean:如果我在Action类中最后编写Throwable块,它会到达Throwable内部。我在里面做了一个测试throwable@Siddhartha,这只是为了知道是否将异常引发到action类,仅此而已。很可能IllegalArgumentException被包装在其他类型的异常中。请这样做-捕获可丢弃的,并在块内检查原因。通过system.out上的断点,调试必须很容易。您应该知道异常是如何包装的。@ThrashBean:CAUSE------------java.lang.IllegalArgumentException:NamedName的查询:CmcMapServerInfo.getMapServerr未找到。
<package name="cdot.oss.cmsat.conf.mapserver.struts" namespace="/"
        extends="struts-default">

        <interceptors>
            <interceptor-stack name="appDefaultStack">
                <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="appDefaultStack" />

        <global-results>
            <result name="exception">mapServer/pages/Exception.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception"
                result="exception" />
        </global-exception-mappings>


        <action name="getMapServerDetails"
            class="cdot.oss.cmsat.conf.struts.ConfigureMapServerAction" method="getMapServerDetails">

            <result name="success">mapServer/pages/ConfigureMapServerInput.jsp
            </result>
            <result name="input">mapServer/pages/ConfigureMapServerInput.jsp
            </result>
            <result name="error">mapServer/pages/Error.jsp</result>


        </action>