chapter05 - Java异常处理_第1页
chapter05 - Java异常处理_第2页
chapter05 - Java异常处理_第3页
chapter05 - Java异常处理_第4页
chapter05 - Java异常处理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

JAVA核心技术(中级),刘彬liubin.ah微博,1)Java异常的概念2)异常的处理机制3)Java异常的分类4)异常的捕获、处理和抛出5)使用用户自定义异常,Java异常的概念,异常也称为例外,是在程序运行过程中发生的、会打断程序正常执行的事件。它中断指令的正常执行。Java中提供了一种独特的处理例外的机制,通过例外来处理程序设计中出现的错误。下面是几种常见的异常。1)算术异常(ArithmeticException)2)没有给对象开辟内存空间时会现空指针异常(NullPointerException)3)找不到文件异常(FileNotFoundException)所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理,这样才能保证程序可以正常运行。,Java异常,Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,例如:对负数开平方根空指针访问试图读取不存在的文件网络连接中断,Java异常举例,publicclassTest12_1publicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;for(inti=0;i5;i+)System.out.println(friendsi);System.out.println(nthisistheend);,Java异常举例,程序Test12_1运行结果:javaTest12_1lisabilykessyExceptioninthreadmainjava.lang.ArrayIndexOutOfBoundsExceptionatTest12_1.main(Test12_1.java:5)Pressanykeytocontinue.,Java异常类的继承架构,常见异常,RuntimeException错误的类型转换数组下标越界空指针访问IOExeption从一个不存在的文件中读取数据越过文件结尾继续读取连接一个不存在的URL,异常处理机制,Throw:Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。Catch:当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。终止:如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。程序员只能处理违例(Exception),而对错误(Error)无能为力。,异常处理举例,publicclassTest12_2publicstaticvoidmain(Stringargs)Stringfriends=lisa,bily,kessy;tryfor(inti=0;i5;i+)System.out.println(friendsi);catch(java.lang.ArrayIndexOutOfBoundsExceptione)System.out.println(indexerr);System.out.println(nthisistheend);,异常处理举例,程序Test12_2运行结果:javaTest12_2lisabilykessyindexerrthisistheendPressanykeytocontinue.,捕获异常,捕获异常是通过try-catch-finally语句实现的。try./可能产生异常的代码catch(ExceptionName1e)./当产生ExceptionName1型异常时的处置措施catch(ExceptionName2e)./当产生ExceptionName2型异常时的处置措施finally./无条件执行的语句,捕获异常,try捕获异常的第一步是用try语句块选定捕获异常的范围。catch在catch语句块中是对异常对象进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。与其它对象一样,可以访问一个异常对象的成员变量或调用它的方法。getMessage()方法,用来得到有关异常事件的信息printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。,捕获异常,finally捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是可选的,捕获异常,trystartFaucet();waterLawn();catch(BrokenPipeExceptione)logProblem();finallystopFaucet();,IOException异常处理举例,importjava.io.*;publicclassTest12_3publicstaticvoidmain(Stringargs)FileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();,java.io.FileNotFoundExceptionjava.io.IOException,IOException异常处理举例,importjava.io.*;publicclassTest12_4publicstaticvoidmain(Stringargs)tryFileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();catch(IOExceptione)System.out.println(e);finallySystem.out.println(Itsok!);,声明抛弃异常,声明抛弃异常是Java中处理异常的第二种方式如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应声明抛弃异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理声明抛弃举例:publicvoidreadFile(Stringfile)throwsIOException/读文件的操作可能产生IOException类型的异常FileInputStreamfis=newFileInputStream(file);.,声明抛弃异常举例,importjava.io.*;publicclassTest12_5publicstaticvoidmain(Stringargs)Test12_5t=newTest12_5();tryt.readFile();catch(IOExceptione)System.out.println(e);publicvoidreadFile()throwsIOExceptionFileInputStreamin=newFileInputStream(myfile.txt);intb;b=in.read();while(b!=-1)System.out.print(char)b);b=in.read();in.close();,重写方法声明抛弃异常原则,重写方法不能抛出比被重写方法范围更大的异常类型,publicclassApublicvoidmethodA()throwsIOExceptionpublicclassB1extendsTestApublicvoidmethodA()throwsFileNotFoundExceptionpublicclassB2extendsTestApublicvoidmethodA()throwsException,人工抛出异常,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要人工创建并抛出首先要生成异常对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。IOExceptione=newIOException();throwe;可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:thrownewString(wanttothrow);,创建用户自定义异常类,用户自定义异常类MyException,用于描述数据取值范围错误信息:classMyExceptionextendsExceptionprivateintidnumber;publicMyException(Stringmessage,intid)super(message);this.idnumber=id;publicintgetId()returnidnumber;,使用用户自定义异常类,publicclassTest12_6publicvoidregist(intnum)throwsMyExceptionif(num0)thrownewMyException(人数为负值,不合理,3);System.out.p

温馨提示

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

最新文档

评论

0/150

提交评论