面向对象的程序设计――java课件第11章_第1页
面向对象的程序设计――java课件第11章_第2页
面向对象的程序设计――java课件第11章_第3页
面向对象的程序设计――java课件第11章_第4页
面向对象的程序设计――java课件第11章_第5页
已阅读5页,还剩14页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、0第章异有处理第章异希处理1L1Java异常处理)1L2Java的异常处理语句0 第章异有处理11.1Java异常处理机制Java的异常处理机制是为了及时有效地处理程序运行中的异常错误。按照这种机制,在程序中监视可能发生异常的程序块,一个程序中的所有异常被收集起来放到程序的某一段中处理。这就使人们不必在被监视的程序块中多处插入处理异常的代码,使完成正常功能的程序代码与进行异常处理的程序代码分开。0第章异有处理11.1.1异常处理机制的结构Java中引入了异常和异常类,并且定义了很多异常类。每个异常类代表一类运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发

2、生一个可识别的运行错误时,系统都会产生一个相应异常类的对象,并由系统中相应的机制来处理,以确保不会产生死机、死循环或其他对操作系统有损害的结果,从而保证了整个程序运行的安全性。图11.1异常处理机制结构W第章异有处理乂:8在Java程序中,当程序运行过程中发生异常时,可采用如图11.1所示的两种方式处理异常:一是由Java异常处理机制的预设处理方法来处理,即一旦程序发生异常,程序就会被终止并显示一些错误信息给用户;二是使用Java语言提供的try-catch-flnally语句自行处理异常。这种方式的优点很多,其中最主要的优点是将处理异常的代码与程序代码的主线分离开来,增强了程序的可读性;其次

3、是可减少中途终止程序运行的可能性。第章异有处理【示例程序cll.java】系统自动抛出异常。publicclasscl1_1publicstaticvoidmain(Stringlargs)inta,b,c;a=67;b=0;c=a/b;System.out.println(a+17n+b+n=H+c);运行结果:ExceptioninthreadHmainMjava.lang.ArithmeticExcption:/byzeroAtcll_l.main(cll_l.java:8)0 第章异有处理11.1.2异常类的继承关系图11.2异常类的继承结构6第章异有处理在Java语言中所有的异常类都

4、继承自java.lang.Throwable类。Throwable类有两个直接子类:一个是Error子类,它包含Java系统或执行环境中发生的异常,这些异常是用户无法捕捉到的异常;另一个是Exception类,它包含了一般性的异常,如I/O异常,SQL异常,这些异常是用户可以捕捉到的异常,可以通过产生它的子类来创建自一的异常处理。下而分别论述。宣 第章异有处理1.java.util包中的异常Exception'RuntimeExceptionEmptyStackExceptionNoSuchElementExceptionn第"章异有处理2.java.io包中的异常Excep

5、tionlOExceptionEOFExceptionFileNotFoundExceptionInterruptedlOExceptionUTFDataFormatExceptionn第"章异帝处理3.java.awt包中的异常ExceptionAWTExceptionn 第"章异帝处理4. 包中的异常ExceptionlOExceptionMalformedURLExceptionProtocolExceptionSocketExceptionUnknownHostExccptionUnknownServiceException第章异有处理第章异笔处理Exception

6、5.系统定义的运行 异常Exception类ClassNolFoundExceptionClassNotSupportedExceptionIllegalAcccssExceptionInstaniiationExceptionInterruptcdExccptionNoSuchMethodExceplionRuntimcExcq)tionArithmeticExceptionArrayStoreExcq>tionClassCasiExcepiionIllegalArgumentExceptionIllcgalThrcadStaicException-NumberFormatExcept

7、ionIIlegalMoniiorSiateExcepiionIndexOutofBoundsExcepiionArraylndcxOulOfBvundsExceptionStringlndexOutOfBoundsExccptionNcgativcArraySizcExccptionNullpainterExceptionSecurityExccption6.系统定义的运行异常Error类系统定义的运行异常Error类中,除AWTError类是在java.awt包中外,其余的全部在java.lang包中。java.lang包中的Error类如下:第章异笔处理官 第章异有处理ErrorLink

8、ageErrorClassCircularityErrorClassFoimatErrorIncompatibleClassChangcEnorAbstractMethodError11lege1Acce>sErrorInstantiationErrorNoSuchFieldErrorNoSuchMethodEjTorNoClassDefFoundErrorUnsatisfiedLindErrorVerifyError一ThreadDcathVirtualMachineError(Abstractclass)IntemalErrorOutofMemoryErrorStackoverflo

9、wErrorUnknownError11.2Java的异常处理语句在大多数情况下,系统预设的异常处理方法只会输出一些简单的信息到显示器上,然后结束程序的执行。这样的处理方式在许多情况下并不能符合我们的要求,为此,Java语言为我们提供了trycatch-finally语句,使用该语句可以明确地捕捉到某种类型的异常,并按我们的要求加以适当的处理,这才是发挥异常处理机制的最佳方式。Try-catch-finally的结构如图11.3所示。图11.3try-catch-finally结不勾W.黄”二反受Mtry-catch-finally组合语句用来实现抛出异常和捕获异常的功能。其格式如下:trys

10、tatements可能发生异常的程序代码)catch(ExceptionType1ExceptionObject)刊第章异有处理ExceptionHandTing7处琬异常的程序代码1)catch(ExceptionType2Exceptionobject)(ExceptionHandling处理异常的程序代码2finallyFinallyHandling无论是否发生异常都要执行的程序代码0第章异有处理(1) try:将可能出现错误的程序代码放在try块中,对try块中的程序代码进行检查,可能会抛出一个或多个异常。因此,try后面可跟一个或多个catch。(2) catch:其功能是捕获异常,

11、参数ExceptionObject是ExceptionType类的对象,这是由前面的try语句生成的。ExceptionType是Throwable类中的子类,它指出catch语句中所处理的异常类型。catch捕获异常的过程中,要将Throwable类中的异常类型和try语句抛出的异常类型进行比较,若相同,则在catch中进行处理。(3) Finally:是这个组合语句的统一出口,一般用来进行一些:遭卮;:期作/例如释放资源、关闭文件等。.选的强第章异笔处理catch(NegativeArraySizeException e) System.out.println(Hexception: &q

12、uot; + e.getMessage();e.printStackTrace();第章异有处理示例程序cll_2.java】使用try-catch-finally语句自行处理异常。publicclasscl1_2publicstaticvoidmain(StringargslJ)inta,b,c;a=67;b=0;tryintx=newint-5;c=a/b;System.out.println(a+n/H+b+M=n+c);catch(ArithmeticExceptione)System.out.println(nb=0:n+e.getMessage();finallySystem.ou

13、t.println(Mendn);运行结果如下:Exception:nulljava.lang.NegativeArraySizeExceptionAtcll_2.main(cll_2.java:11)end.仆第拿异存处理11.2.2 嵌套trycatchfinally语句Java语言的try-catch-finally语句可以嵌套,即在try块中可以包含另外的try-catch-finally语句。【示例程序cll_3.java】使用嵌套的try-catch-finally语句自行处理异常。publicclasscl1_3staticinta,b,c;仆 第聿异有处理 trypublics

14、taticvoidmain(Stringargs)a=10;b=0;tryc=a/b;System.out.println("a/b="+c);catch(IndexOutOtBoundsExceptionE)System.out.println("捕捉超出索引异常.");finallySystem.out.println("嵌套内层的finally区块)熨 第章异冬处理catch(ArithmeticExceptionE)System.oul.println("捕捉数学运算异常:b="+b);finallySystem.o

15、ut.printin("嵌套外层的finally区块");if(b=0)System.out.println("程序执行发生异常!”);elseSystem.out.println("程序正常执行完毕!");运行结果:嵌套内层的finally区块捕捉数学运算异常:b=0嵌套外层的finally区块程序执行发生异常!0 第章异存处理熨第章异存处理3:-11.2.3 抛出异常的Throw语句与Throws语句Java的异常是系统在程序运行时抛出的,但编程员也可以根据实际情况在程序中抛出一个异常。在Java语言中,可以使用Throw语句与Throws

16、语句跳1出异常。1 .Throw语句Throw语句用来明确地抛出一个异常。Throw语句的作用是改变程序的执行流程,使程序跳到相应的异常处理语句中执行。Throw语句格式如下:ThrowExceptionObject熨第章异存处理3(示例程序c11_4.java使用Throw语句抛出异常。publicclasscl1_4publicstaticvoidmain(Stringargs)thrownewNullPointerException("自编j异常,");catch(NullPointerExceptione)System.out.println("excep

17、tion:n+e);)运行结果:Exception:java.lang.NullPointerException:自编异常0第章异存处理2 .Throws语句在有些情况下,不需要一个方法本身来处理异常,而是希望把异常向上移交给调用这个方法的方法来处理,在这种情况下则需要通过Throws语句来实现。Throws语句的格式如卜:returnTypemethodName(paral,para2,.)ThrowsexceptionList彳更用Throws®句抛出异博*“第章异有处理【示彳列程序cilJ.java】importjava.awt.*;importjava.applet.*;publicclasscl1_5extendsAppletstaticvoidthrowOn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论