You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Marek Cupak <cu...@gmail.com> on 2007/08/13 16:59:54 UTC

global exception handling - struts sometimes ignores my setting in struts-config, what's wrong?

i need to configure struts to display user a errpage.jsp, when runtime
exception CustomException occur anywhere in the application. i've added to
struts-config:

<global-exceptions>
	<exception	key="exception.Exception"
			type="somepackage.CustomException"
			path="/ErrorPage.jsp"/>
</global-exceptions>

and to web.xml:

<error-page>
    	<error-code>500</error-code>
	<location>/ErrorPage.jsp</location>
</error-page>

when i browse page _spikeScriptletThrowingEx.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
	<head>
		<title></title>
	</head>
	<body>
		<% throw new Exception(); %>
	</body>
</html>

i receive only "The website cannot display the page, HTTP 500...". why is
the ErrorPage.jsp not displayed?

-- 
View this message in context: http://www.nabble.com/global-exception-handling---struts-sometimes-ignores-my-setting-in-struts-config%2C-what%27s-wrong--tf4261735.html#a12127828
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: global exception handling - struts sometimes ignores my setting in struts-config, what's wrong?

Posted by Marek Cupak <cu...@gmail.com>.
I've reduced my real problem to a simple somepackage.CustomException example.
In my real application, there are actions, such:

<action	path = "/_spikeAction_3rdLayerEx"
	validate = "false"
	scope = "request"
	name = "spikeAction_3rdLayerEx"
	type = "_spikes.ownactions.SpikeAction_3rdLayerEx">
</action>

where the action class is:

public final class SpikeAction_3rdLayerEx extends Action {
	private static Logger logger =
Logger.getLogger(SpikeAction_3rdLayerEx.class.getName());

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		try {
			/*
			 * some our code that can throw checked exception....
			 */
			throw new Exception("3rd layer exception", new Exception("the cause"));
		
		} catch (Exception e) {
			logger.log(Level.SEVERE, "log 3rd layer exceptions and forward to error
page", e);
			throw e;
		}
		
//		return null;
	}
}

this works well, when in web.xml is:

<error-page>
    	<error-code>500</error-code>
	<location>/ErrorPage_3rdLayer.jsp</location>
</error-page>

so the page ErrorPage_3rdLayer.jsp is displayed. But how can i configure the
environment to display mentioned error page every time when AnyException
extends Exception (or extends RuntimeException) occurs, no matter whether in
an action or jsp page simply browsed by browser?

The second problem is that i have some BaseActionForm extends ActionForm,
which has got the method validate. When an Exception (ClientException, or
RemoteException, or RuntimeException) occurs in this method, sturts don't
display error page. It is possible this situation is caused by wrong design
of the application, which is in progress of development.


Zarar Siddiqi wrote:
> 
> Struts isn't catching this exception because you're throwing it in a
> JSP page which is being accessed outside the Struts servlet (directly
> via a URL).
> 
> Try throwing the exception in a Struts action and see what happens.
> But even if you do that you'll run into a problem with the current
> setup.  You're asking Struts to "intercept" an exception called
> somepackage.CustomException but are throwing java.lang.Exception.  So
> Struts will just ignore it since the thrown exception is not a
> CustomException.  Try throwing CustomException instead of Exception OR
> change your Struts config to look for java.lang.Exception.
> 
> Zarar
> 
> On 8/13/07, Marek Cupak <cu...@gmail.com> wrote:
>>
>> i need to configure struts to display user a errpage.jsp, when runtime
>> exception CustomException occur anywhere in the application. i've added
>> to
>> struts-config:
>>
>> <global-exceptions>
>>         <exception      key="exception.Exception"
>>                         type="somepackage.CustomException"
>>                         path="/ErrorPage.jsp"/>
>> </global-exceptions>
>>
>> and to web.xml:
>>
>> <error-page>
>>         <error-code>500</error-code>
>>         <location>/ErrorPage.jsp</location>
>> </error-page>
>>
>> when i browse page _spikeScriptletThrowingEx.jsp:
>>
>> <%@ page language="java" contentType="text/html; charset=UTF-8"
>> pageEncoding="UTF-8"%>
>> <html>
>>         <head>
>>                 <title></title>
>>         </head>
>>         <body>
>>                 <% throw new Exception(); %>
>>         </body>
>> </html>
>>
>> i receive only "The website cannot display the page, HTTP 500...". why is
>> the ErrorPage.jsp not displayed?
>>
>> --
>> View this message in context:
>> http://www.nabble.com/global-exception-handling---struts-sometimes-ignores-my-setting-in-struts-config%2C-what%27s-wrong--tf4261735.html#a12127828
>> Sent from the Struts - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/global-exception-handling---struts-sometimes-ignores-my-setting-in-struts-config%2C-what%27s-wrong--tf4261735.html#a12139698
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: global exception handling - struts sometimes ignores my setting in struts-config, what's wrong?

Posted by Zarar Siddiqi <za...@gmail.com>.
Struts isn't catching this exception because you're throwing it in a
JSP page which is being accessed outside the Struts servlet (directly
via a URL).

Try throwing the exception in a Struts action and see what happens.
But even if you do that you'll run into a problem with the current
setup.  You're asking Struts to "intercept" an exception called
somepackage.CustomException but are throwing java.lang.Exception.  So
Struts will just ignore it since the thrown exception is not a
CustomException.  Try throwing CustomException instead of Exception OR
change your Struts config to look for java.lang.Exception.

Zarar

On 8/13/07, Marek Cupak <cu...@gmail.com> wrote:
>
> i need to configure struts to display user a errpage.jsp, when runtime
> exception CustomException occur anywhere in the application. i've added to
> struts-config:
>
> <global-exceptions>
>         <exception      key="exception.Exception"
>                         type="somepackage.CustomException"
>                         path="/ErrorPage.jsp"/>
> </global-exceptions>
>
> and to web.xml:
>
> <error-page>
>         <error-code>500</error-code>
>         <location>/ErrorPage.jsp</location>
> </error-page>
>
> when i browse page _spikeScriptletThrowingEx.jsp:
>
> <%@ page language="java" contentType="text/html; charset=UTF-8"
> pageEncoding="UTF-8"%>
> <html>
>         <head>
>                 <title></title>
>         </head>
>         <body>
>                 <% throw new Exception(); %>
>         </body>
> </html>
>
> i receive only "The website cannot display the page, HTTP 500...". why is
> the ErrorPage.jsp not displayed?
>
> --
> View this message in context: http://www.nabble.com/global-exception-handling---struts-sometimes-ignores-my-setting-in-struts-config%2C-what%27s-wrong--tf4261735.html#a12127828
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org