⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 入門 12 - struts例外處理 - javaworld@tw.htm

📁 struts快速入门文章
💻 HTM
📖 第 1 页 / 共 2 页
字号:
                                HttpServletRequest request,
                                HttpServletResponse response)
<SPAN class=java-keyword>throws</SPAN> ServletException {
    ....
}</PRE></DIV></DIV><BR> 如果您想要自行處理被丟出的例外,您可以繼承ExceptionHandler並重新定義execute()方法,並在&lt;exception&gt;標籤中使用屬性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>&lt;global-exceptions&gt;
        &lt;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>/&gt;
    &lt;/global-exceptions&gt;</PRE></DIV></DIV><BR> 如果您想要深入瞭解Struts的例外處理方式,可以看看RequestProcessor原始碼中的processException()方法,以及ExceptionHandler的execute()方法。<BR> 當Action物件丟出例外時,RequestProcessor的processException()方法會看看是否有在&lt; 
            exception&gt;標籤中聲明,這個工作是委由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>&nbsp;<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>&nbsp;<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&amp;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&amp;showComments=true#addcomment">Add 
            Comment</A> </DIV></TD>
          <TD width=5>&nbsp;</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&amp;showComments=true 
            href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&amp;showComments=true">140.138.150.106/confluence/pa...</A> 
            (7) <BR><A 
            title=http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&amp;showComments=false 
            href="http://140.138.150.106/confluence/pages/viewpage.action?pageId=522&amp;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&amp;q=struts+exception%E5%BA%94%E7%94%A8&amp;lr= 
            href="http://www.google.com/search?hl=zh-CN&amp;q=struts+exception%E5%BA%94%E7%94%A8&amp;lr=">Google: 
            struts exception应用</A> (3) <BR><A 
            title=http://www.google.co.jp/search?hl=ja&amp;rls=GGLD%2CGGLD%3A2004-49%2CGGLD%3Aja&amp;q=processException+Exception+struts&amp;btnG=Google+%E6%A4%9C%E7%B4%A2&amp;lr= 
            href="http://www.google.co.jp/search?hl=ja&amp;rls=GGLD%2CGGLD%3A2004-49%2CGGLD%3Aja&amp;q=processException+Exception+struts&amp;btnG=Google+%E6%A4%9C%E7%B4%A2&amp;lr=">Google: 
            processException Exce...</A> (2) <BR><A 
            title=http://140.138.150.106/confluence/pages/listpages-dirview.action?key=opensrc&amp;openId=833 
            href="http://140.138.150.106/confluence/pages/listpages-dirview.action?key=opensrc&amp;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 + -