📄 ch30.htm
字号:
<HTML><HEAD><TITLE>developer.com - Reference</TITLE><META NAME="Author" CONTENT="developer.com"><META NAME="Keywords" CONTENT="javascript, ActiveX, VRML, Push, channel,push channel, applet, directory, news, community, developer, internet,intranet, java, java applet, J++, javabeans, java products, tools, javatools, JDK, java development kit, java development environment, JIT,JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, API,browser, java documentation, CDF, Common Desktop Format, RDF, ResourceDescription Framework, Netcaster, Netcast, Castanet, meta-language, metadata,solaris, Solaris, SUN, CGI, Perl, Oracle, database, network, Netscape API,Apache, apache, SSL, mSQL, Netscape, Fasttrack, FastTrack,industry standard, ActiveX bridge, web, internet, site, sitedesign, microsoft, active server pages, asp, iis, nt, win95, 95, html, cgi,frontpage, business, corporate, vbscript, javascript, activex, isapi,database, access, sql, server, www, 3.0, 3.01, 3.02, 3.03, 3.04, 4.0,4.0b2, 4.01, 4.03, 4.04, connection, online, commerce, publisher,publishing, publish, webmaster, dynamic html, dhtml, windows 98, netscape,netscape software, shareware, magazines, jobs, japan, free, freeware, freestuff"><META NAME="description" CONTENT="Developer.com is the leading onlineservice for developers. It includes Gamelan, the official directory for Java, as wellas news, information, tutorials, and directories for other Internet technologiesincluding ActiveX, JavaScript, perl, VRML, Java Beans, push technologies, andother Internet and intranet technologies. Developer.com is also the home ofDeveloper Direct, the Professional Developer's Store, where developers canpurchase and download thousands of Web, authoring and other developmentproducts at some of today's lowest prices."><META NAME="distribution" CONTENT="global"><META NAME="resource-type" CONTENT="document"><META NAME="language" CONTENT="en"></HEAD><BODY BACKGROUND="/images/curve_r-wide.gif" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#DD0000" VLINK="#999999" ALINK="#FF0000"><TABLE><TR><TD VALIGN=TOP WIDTH=120><A HREF="/" ><IMG SRC="/images/masthead_r.gif" WIDTH="100" HEIGHT="78" BORDER="0"ALT="Developer.com Logo"></a></TD><TD><a target="resource window" href="http://adserver.developer.com/cgi-bin/accipiter/adclick.exe/AREA=DCBAN.REF/DT=null"><img src="http://adserver.developer.com/cgi-bin/accipiter/adserver.exe/AREA=DCBAN.REF/DT=null" HEIGHT="60" WIDTH="468" ALT="Click here to support our advertisers"><BR><CENTER>Click here to support our advertisers</CENTER></a></TD></TR></TABLE><!--outer table--><TABLE><!--outer table--><TR><!--outer table--><TD VALIGN="TOP"><!--navbar info --><table><tr><td><A HREF="http://www.developerdirect.com/" ><IMG SRC="/images/button_s.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><b>SHOPPING</b></font></a></td></tr><tr><td><A HREF="/community/jobs/c_jobs.html"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>JOB BANK</B></font></a></td></tr><tr><td><A HREF="http://www.classifieds2000.com/cgi-cls/display.exe?Developer+computer+searchcomputercategories"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>CLASSIFIEDS</B></font></a></td></tr><tr><td><A HREF="/directories/directories.html"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>DIRECTORIES</B></font></a></td></tr><tr><td><A HREF="/reference/"><IMG SRC="/images/button_r.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>REFERENCE</B></font></a><br><a href="/reference/r_library.html"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000">Online Library</a></font></td></tr><tr><td><A HREF="/classroom/"><IMG SRC="/images/button_r.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>LEARNING CENTER</B></font></a></td></tr><tr><td><A HREF="/journal/"><IMG SRC="/images/button_n.gif" width="15" height="11" BORDER="0"><B><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000">JOURNAL</font></B></a></td></tr><tr><td><A HREF="/news/"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><b>NEWS CENTRAL</b></font></a></td></tr><tr><td><A HREF="/downloads/"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><b>DOWNLOADS</b></font></a></td></tr><tr><td><A HREF="/community/" ><IMG SRC="/images/button_c.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><B>COMMUNITY</B></font></a></td></tr><tr><td><A HREF="/calendar/"><IMG SRC="/images/button_d.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><b>CALENDAR</b></font></a></td></tr><tr><td><A HREF="/about/"><IMG SRC="/images/button_a.gif" width="15" height="11" BORDER="0"><FONT FACE="Arial, Helvetica" SIZE="-1" color="#000000"><b>ABOUT US</b></a></font></td></tr></table><table><tr><td><form action="/subscribe/list.cgi" method=post ><img src="/images/rule.gif" width="100" height="2"><br><B><FONT FACE="Arial, Helvetica" SIZE="-1">Journal:</b></font><br><input name='email' value='your e-mail' size="11"><input type='hidden' name='state' value='Subscribe'></td></tr><tr><td><input type='submit' value='Subscribe'><br><font size="-1">Get the weekly email highlights from the most popular journal for developers!<br><a href="http://www.developer.com/subscribe.html">Current issue</a><img src="/images/rule.gif" width="100" height="2"><input type='hidden' name='name' value='New Subscriber'></FORM></td></tr></table><!--/navbar--><font size="-1"><A HREF="http://www.developer.com">developer.com</a><BR><A HREF="http://www.developerdirect.com">developerdirect.com</a><BR><A HREF="http://www.htmlgoodies.com">htmlgoodies.com</a><BR><A HREF="http://www.javagoodies.com">javagoodies.com</a><br><A HREF="http://www.jars.com">jars.com</a><BR><a href="http://www.intranetjournal.com">intranetjournal.com</a><br><a href="http://www.javascripts.com">javascripts.com</a><br></font><!--outer table--></TD><!--outer table--><TD VALIGN="TOP"><BLOCKQUOTE><P><img src="/images/header_r.gif" width="440" height="50"><P><MAP NAME ="header_r2.gif.map"><AREA SHAPE ="RECT" HREF ="/reference/author.html" COORDS ="361,0,440,29"><AREA SHAPE ="RECT" HREF ="/reference/basic.html" COORDS ="254,0,360,29"><AREA SHAPE ="RECT" HREF ="/reference/help.html" COORDS ="183,0,251,29"><AREA SHAPE ="RECT" HREF ="/reference/cool.html" COORDS ="100,0,181,29"><AREA SHAPE ="RECT" HREF ="/reference/mybook.html" COORDS ="0,0,100,29"></MAP><MAP NAME ="header_r1.gif.map"><AREA SHAPE ="RECT" HREF ="/reference/personalize.html" COORDS ="339,0,439,29"></MAP><p><font face="Arial,Helvetica" size="-1" color="#006666"><A HREF="/reference/r_library.html"><B>All Categories</A> :</B><b><A HREF="/reference/r_java.html">Java</A></b></font><p><META><H1><FONT SIZE=6 COLOR=#Ff0000>Chapter 30</FONT></H1><H1><FONT SIZE=6 COLOR=#Ff0000>Exceptions</FONT></H1><HR><P><CENTER><B><FONT SIZE=5><A NAME="CONTENTS">CONTENTS</A></FONT></B></CENTER><UL><LI><A HREF="#JavasExceptions">Java's Exceptions</A><LI><A HREF="#ThrowinganException">Throwing an Exception</A><LI><A HREF="#TypesofExceptions">Types of Exceptions</A><LI><A HREF="#DeterminingtheExceptionstoHandle">Determining the Exceptions to Handle</A><UL><LI><A HREF="#ExampleCatchingaRuntimeException">Example: Catching a Runtime Exception</A><LI><A HREF="#ExampleHandlingMultipleExceptions">Example: Handling Multiple Exceptions</A></UL><LI><A HREF="#Summary">Summary</A><LI><A HREF="#ReviewQuestions">Review Questions</A><LI><A HREF="#ReviewExercises">Review Exercises</A></UL><HR><P>When you write applets or applications using Java, sooner or lateryou're going to run into exceptions. An exception is a specialtype of error object that is created when something goes wrongin a program. After Java creates the exception object, it sendsit to your program, an action called throwing an exception. It'sup to your program to catch the exception. You do this by writingthe exception-handling code. In this chapter, you get the insideinfo on these important error-handling objects.<H2><A NAME="JavasExceptions"><FONT SIZE=5 COLOR=#Ff0000>Java's Exceptions</FONT></A></H2><P>In <A HREF="ch28.htm" >Chapter 28</A>, "Communications," you got a quick lookat exceptions and how they are handled in a program. Specifically,you had to be prepared to handle an exception when you createdan <TT>URL</TT> object from a text string. This is because thetext string may not use the proper syntax for an URL, making itimpossible to create the <TT>URL</TT> object. In this case, the<TT>URL</TT> constructor throws an exception object called <TT>MalformedURLException</TT>.Listing 30.1 shows the code segment that handles this exception.<HR><BLOCKQUOTE><B>Listing 30.1 LST30_1.TXT: Handling an Exception.<BR></B></BLOCKQUOTE><BLOCKQUOTE><PRE>try{ URL url = new URL(str); AppletContext context = getAppletContext(); context.showDocument(url);}catch (MalformedURLException e){ badURL = true; repaint();}</PRE></BLOCKQUOTE><HR><P>As you can see from the listing, you place the code that may causethe exception in a <TT>try</TT> program block, whereas the exception-handlingcode goes into a <TT>catch</TT> program block. In this case, thefirst line of the <TT>try</TT> block attempts to create an <TT>URL</TT>object from the string given in the variable <TT>str</TT>. Ifthe string is not properly formatted for an URL, the <TT>URL</TT>constructor throws a <TT>MalformedURLException</TT>. When thishappens, Java ignores the rest of the code in the <TT>try</TT>block and jumps to the <TT>catch</TT> block, where the programhandles the exception. On the other hand, if the <TT>URL</TT>object gets created okay, Java executes all the code in the <TT>try</TT>block and skips the <TT>catch</TT> block.<P><CENTER><TABLE BORDER=1 WIDTH=80%><TR VALIGN=TOP><TD><B>NOTE</B></TD></TR><TR VALIGN=TOP><TD><BLOCKQUOTE>The <TT>catch</TT> program block does more than direct program execution. It actually catches the exception object thrown by Java. For example, in Listing 30.1, you can see the exception object being caught inside the parentheses following the <TT>catch</TT> keyword. This is very similar to a parameter being received by a method. In this case, the type of the "parameter" is <TT>MalformedURLException</TT> and the name of the parameter is <TT>e</TT>. If you need to, you can access the exception object's methods through the <TT>e</TT> object.</BLOCKQUOTE></TD></TR></TABLE></CENTER><P><P>Java defines many exception objects that may be thrown by themethods in Java's classes. How do you know which exceptions youhave to handle? First, if you write an applet that calls a methodthat may throw an exception, Java insists that you handle theexception in one way or another. If you fail to do so, your appletwill not compile. Instead, you'll receive an error message indicatingwhere your program may generate the exception (see Figure 30.1).<P><A HREF="f30-1.gif"><B> Figure 30.1 : </B><I>Java's compiler gives you an error message if you <r>fail to handle an exception in your applet.</I></A><P><P>Although the compiler's error messages are a clue that somethingis amiss, the clever programmer will look up a method in Java'sdocumentation before using the method. Then, the programmer willknow in advance whether that method requires exception-handlingcode. If you're interested in seeing the exceptions that are definedby a package, find the package's section in Java's online documentation(see Figure 30.2), where the classes and exceptions are listed.<P><A HREF="f30-2.gif"><B> Figure 30.2 : </B><I>Java's online documentation lists the exception objects that may be thrown by methods in a class.</I></A><P><P>The online documentation also lists all the methods that comprisea particular package. By looking up the method in the documentation(see Figure 30.3), you can see what types of arguments the methodexpects, the type of value the method returns, and whether themethod may throw an exception. If the method shows that it canthrow an exception, your code must handle the right type of exceptionor the program will not compile.<P><A HREF="f30-3.gif"><B> Figure 30.3 : </B><I>The online documentation for a method shows the exception the method may throw.</I></A><P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -