📄 入門 12 - struts例外處理 - javaworld@tw.htm
字号:
HttpServletRequest request,
HttpServletResponse response)
<SPAN class=java-keyword>throws</SPAN> ServletException {
....
}</PRE></DIV></DIV><BR> 如果您想要自行處理被丟出的例外,您可以繼承ExceptionHandler並重新定義execute()方法,並在<exception>標籤中使用屬性handler指定您自訂的ExceptionHandler類別:
<DIV class=code
style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<DIV class=codeHeader
style="BORDER-BOTTOM-STYLE: solid"><B>struts-config.xml</B></DIV>
<DIV class=codeContent><PRE><global-exceptions>
<exception
key=<SPAN class=java-quote>"expired.password"</SPAN>
type=<SPAN class=java-quote>"app.ExpiredPasswordException"</SPAN>
handler=<SPAN class=java-quote>"onlyfun.caterpillar.CustomExceptionHandler"</SPAN>
path=<SPAN class=java-quote>"/changePassword.jsp"</SPAN>/>
</global-exceptions></PRE></DIV></DIV><BR> 如果您想要深入瞭解Struts的例外處理方式,可以看看RequestProcessor原始碼中的processException()方法,以及ExceptionHandler的execute()方法。<BR> 當Action物件丟出例外時,RequestProcessor的processException()方法會看看是否有在<
exception>標籤中聲明,這個工作是委由ActionMapping物件的findException()方法來執行,如果找不到相對應的例外處理,除了標籤中聲明,這個工作是委由ActionMapping物件的findException()方法來執行,如果找不到相對應的例外處理,除了IOException直接丟出之外,其它的例外則將之包裝為ServletException例外再丟出:
<DIV class=code
style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<DIV class=codeContent><PRE>ExceptionConfig config = mapping.findException(exception.getClass());
<SPAN class=java-keyword>if</SPAN>(config == <SPAN class=java-keyword>null</SPAN>) {
....
<SPAN class=java-keyword>if</SPAN>(exception <SPAN class=java-keyword>instanceof</SPAN> IOException) {
<SPAN class=java-keyword>throws</SPAN> (IOException) exception;
}
<SPAN class=java-keyword>else</SPAN> <SPAN class=java-keyword>if</SPAN>(exception <SPAN class=java-keyword>instanceof</SPAN> ServletException) {
<SPAN class=java-keyword>throws</SPAN> (ServletException) exception;
}
<SPAN class=java-keyword>else</SPAN> {
<SPAN class=java-keyword>throws</SPAN> <SPAN class=java-keyword>new</SPAN> ServletException(exception);
}
}</PRE></DIV></DIV><BR> 如果RequestProcessor的processException()找到對應的例外處理,則載入ExceptionHandler進行處理,最後返回一個ActionForward物件:
<DIV class=code
style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<DIV class=codeContent><PRE><SPAN class=java-object>Class</SPAN> handlerClass = <SPAN class=java-object>Class</SPAN>.forName(config.getHandler());
ExceptionHandler handler = (ExceptionHandler) handlerClass.newInstance();
<SPAN class=java-keyword>return</SPAN> (handler.execute(exception, config, mapping, form, request, response));</PRE></DIV></DIV><!-- page content ends --><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Description rdf:about="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=522" dc:identifier="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=522" dc:title="入門 12 - Struts例外處理" trackback:ping="http://www.javaworld.com.tw/confluence/rpc/trackback/522"/></rdf:RDF>-->
<P>
<DIV class=greybox><IMG height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/comment_16.gif"
width=16 align=absMiddle border=0> 0 comments | <A
href="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=522&showComments=true#addcomment"><IMG
height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/add_comment_16.gif"
width=16 align=absMiddle border=0></A> <A
href="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=522&showComments=true#addcomment">Add
Comment</A> </DIV></TD>
<TD width=5> </TD>
<TD vAlign=top width="25%">
<DIV class=navmenu>
<DIV class=menuheading>Page Operations</DIV>
<DIV class=menuitems>
<DIV class=operations>
<UL>
<LI><A accessKey=i
href="http://www.javaworld.com.tw/confluence/pages/pageinfo.action?pageId=522"><IMG
title="Page Information" height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/about_16.gif"
width=16 align=absMiddle border=0></A><SPAN class=label> <A
href="http://www.javaworld.com.tw/confluence/pages/pageinfo.action?pageId=522">Page
Information</A></SPAN>
<LI><A
href="http://www.javaworld.com.tw/confluence/pages/viewpreviousversions.action?pageId=522"><IMG
title="Page History" height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/history_16.gif"
width=16 align=absMiddle border=0></A><SPAN class=label> <A
href="http://www.javaworld.com.tw/confluence/pages/viewpreviousversions.action?pageId=522">Page
History</A></SPAN> </LI></UL>
<UL>
<LI><A
href="http://www.javaworld.com.tw/confluence/display/opensrc/Home"><IMG
title="Space Homepage" height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/home_16.gif" width=16
align=absMiddle border=0></A><SPAN class=label> <A
href="http://www.javaworld.com.tw/confluence/display/opensrc/Home">Space
Homepage</A></SPAN>
<LI><A
href="http://www.javaworld.com.tw/confluence/spaces/viewspacesummary.action?key=opensrc"><IMG
title="Space Summary" height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/web_16.gif" width=16
align=absMiddle border=0></A><SPAN class=label> <A
href="http://www.javaworld.com.tw/confluence/spaces/viewspacesummary.action?key=opensrc">Space
Summary</A></SPAN> </LI></UL></DIV>
<P>
<DIV class=infopanel-heading>Incoming Links: <SPAN
class=smallfont>(<A
href="http://www.javaworld.com.tw/confluence/pages/pageinfo.action?pageId=522#incoming">more</A>)</SPAN>
</DIV><IMG title=Struts入門 height=16
src="入門 12 - Struts例外處理 - JAVAWORLD@TW.files/docs_16.gif" width=16
align=absMiddle border=0> <A
href="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=1958">Struts入門</A>
<BR>
<P></P>
<P>
<DIV class=infopanel-heading>Hot Referrers: <SPAN
class=smallfont>(<A
href="http://www.javaworld.com.tw/confluence/pages/pageinfo.action?pageId=522#referers">more</A>)</SPAN>
</DIV><SPAN class=smallerfont><A
title=http://140.138.150.106/confluence/pages/viewpage.action?pageId=522
href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=522">140.138.150.106/confluence/pa...</A>
(28) <BR><A
title=http://www.jsptw.com/confluence/pages/viewpage.action?pageId=1958
href="http://www.jsptw.com/confluence/pages/viewpage.action?pageId=1958">http://www.jsptw.com/confluence/pages/viewpage.action?pageId=1958</A>
(16) <BR><A
title=http://140.138.150.106/confluence/pages/viewpage.action?pageId=1958
href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=1958">140.138.150.106/confluence/pa...</A>
(9) <BR><A
title=http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&showComments=true
href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&showComments=true">140.138.150.106/confluence/pa...</A>
(7) <BR><A
title=http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&showComments=false
href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&showComments=false">140.138.150.106/confluence/pa...</A>
(7) <BR><A
title=http://javaworld.com.tw/confluence/pages/viewpage.action?pageId=1958
href="http://javaworld.com.tw/confluence/pages/viewpage.action?pageId=1958">javaworld.com.tw/confluence/p...</A>
(5) <BR><A
title=http://www.google.com/search?hl=zh-CN&q=struts+exception%E5%BA%94%E7%94%A8&lr=
href="http://www.google.com/search?hl=zh-CN&q=struts+exception%E5%BA%94%E7%94%A8&lr=">Google:
struts exceptionåºç¨</A> (3) <BR><A
title=http://www.google.co.jp/search?hl=ja&rls=GGLD%2CGGLD%3A2004-49%2CGGLD%3Aja&q=processException+Exception+struts&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
href="http://www.google.co.jp/search?hl=ja&rls=GGLD%2CGGLD%3A2004-49%2CGGLD%3Aja&q=processException+Exception+struts&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=">Google:
processException Exce...</A> (2) <BR><A
title=http://140.138.150.106/confluence/pages/listpages-dirview.action?key=opensrc&openId=833
href="http://140.138.150.106/confluence/pages/listpages-dirview.action?key=opensrc&openId=833">140.138.150.106/confluence/pa...</A>
(1) <BR><A
title=http://www.jsptw.com/confluence/display/opensrc/Struts
href="http://www.jsptw.com/confluence/display/opensrc/Struts">http://www.jsptw.com/confluence/display/opensrc/Struts</A>
(1) <BR></SPAN>
<P></P>
<P>
<DIV class=infopanel-heading>External References:</DIV><SPAN
class=smallerfont><A title="Visit page outside Confluence"
href="http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=1136">http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=1136</A><BR></SPAN>
<P></P></DIV></DIV>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=license-nonprofit>This site is running on Atlassian <B><A
href="http://www.atlassian.com/c/conf/10137">Confluence</A></B> with a free
<B>Open Source Project / Non-profit License</B> (<A
href="http://www.atlassian.com/c/conf/10138">license details</A>).<BR><A
href="http://www.atlassian.com/c/conf/10137">Confluence</A> is professional
wiki, blog and knowledge management tool. <A
href="http://www.atlassian.com/c/conf/10137">Evaluate Confluence for your
organisation</A>.<BR></DIV>
<DIV class=bottomshadow></DIV>
<DIV class=smalltext id=poweredby>Powered by <A class=smalltext
href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer">Atlassian
Confluence</A> (Version: 1.3.5 Build:#122 Mar 01, 2005) - <A class=smalltext
href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470">Bug/feature
request</A> - <A
href="http://www.javaworld.com.tw/confluence/administrators.action">Contact
Administrators</A> <BR></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -