版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(第五课) 异常处理,语默制造,本章内容概述,1) Java异常的概念 2) 异常的处理机制 3) Java异常的分类 4) 异常的捕获、处理和抛出 5) 使用用户自定义异常,什么是异常,语默制造,异常也称为例外,是在程序运行过程中发生的、会打断程序正常执行的事件。它中断指令的正常执行。Java中提供了一种独特的处理例外的机制,通过例外来处理程序设计中出现的错误。 下面是几种常见的异常。 1)算术异常(ArithmeticException ) 2)没有给对象开辟内存空间时会现空指针异常(NullPointerException) 3)找不到文件异常(FileNotFoundException
2、) 所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理,这样才能保证程序可以正常运行。,越界异常举例,语默制造,public class Test05 public static void main(String args) String friends=lisa,bily,kessy; for(int i=0;i5;i+) System.out.println(friendsi); System.out.println(nthis is the end); ,语默制造,程序运行结果: lisa bily kessy Exception in thread main java.l
3、ang.ArrayIndexOutOfBoundsException: 3 at Test05.main(Test05.java:5),异常的程序结构,语默制造,常见异常,语默制造,RuntimeException 错误的类型转换 数组下标越界 空指针访问 IOExeption 从一个不存在的文件中读取数据 越过文件结尾继续读取 连接一个不存在的URL,异常处理机制,语默制造,Throw:Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 Catch:当Java运行时 (jvm)系统接收到异常对象时,会寻找
4、能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 终止:如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 程序员只能处理违例(Exception),而对错误(Error)无能为力。,范例修改,语默制造,public class Test_2 public static void main(String args) String friends=lisa,bily,kessy; try for(int i=0;i5;i+) System.out.println(friendsi); catch (java.lan
5、g.ArrayIndexOutOfBoundsException e) System.out.println(index err); System.out.println(nthis is the end); ,捕获异常,语默制造,捕获异常是通过try-catch-finally语句实现的。 try ./可能产生异常的代码 catch ( ExceptionName1 e ) ./当产生ExceptionName1型异常时的处置措施 catch ( ExceptionName2 e ) . /当产生ExceptionName2型异常时的处置措施 finally . /无条件执行的语句 ,捕获异
6、常,语默制造,try 捕获异常的第一步是用try语句块选定捕获异常的范围。 catch 在catch语句块中是对异常对象进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。与其它对象一样,可以访问一个异常对象的成员变量或调用它的方法。 getMessage( ) 方法,用来得到有关异常事件的信息 printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。,语默制造,finally 捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在tr
7、y代码块中是否发生了异常事件,finally块中的语句都会被执行。 finally语句是可选的,语默制造,try startFaucet(); waterLawn(); catch (BrokenPipeException e) logProblem(); finally stopFaucet(); ,IOException异常处理举例,语默制造,import java.io.*; public class Test_3 public static void main(String args) FileInputStream in=new FileInputStream(myfile.txt)
8、; int b; b = in.read(); while(b!= -1) System.out.print(char)b); b = in.read(); in.close(); ,会出现:java.io.FileNotFoundException java.io.IOException,处理异常,语默制造,import java.io.*; public class Test_4 public static void main(String args) try FileInputStream in=new FileInputStream(myfile.txt); int b;b = in.
9、read(); while(b!= -1) System.out.print(char)b); b = in.read(); in.close(); catch (IOException e) System.out.println(e); finally System.out.println( Its ok!); ,声明抛弃异常,语默制造,声明抛弃异常是Java中处理异常的第二种方式 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应声明抛弃异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理 声明抛弃举例: public void rea
10、dFile(String file) throws IOException / 读文件的操作可能产生IOException类型的异常 FileInputStream fis = new FileInputStream(file); . ,声明抛弃异常举例,语默制造,import java.io.*; public class Test_5 public static void main(String args) Test12_5 t = new Test12_5(); try t.readFile(); catch(IOException e) System.out.println(e); p
11、ublic void readFile() throws IOException FileInputStream in=new FileInputStream(myfile.txt); int b;b = in.read(); while(b!= -1) System.out.print(char)b); b = in.read(); in.close(); ,处理异常,声明抛弃异常,作重写方法声明抛弃异常原则,语默制造,public class A public void methodA() throws IOException public class B1 extends TestA p
12、ublic void methodA() throws FileNotFoundException public class B2 extends TestA public void methodA() throws Exception ,重写方法不能抛出比被重写方法范围更大的异常类型,人工抛出异常,语默制造,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要人工创建并抛出 首先要生成异常对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 IOException e =new IOException(); throw e; 可以抛出的异常必须是T
13、hrowable或其子类的实例。下面的语句在编译时将会产生语法错误: throw new String(want to throw);,创建用户自定义异常类,语默制造,用户自定义异常类MyException,用于描述数据取值范围错误信息: class MyException extends Exception private int idnumber; public MyException(String message, int id) super(message); this.idnumber = id; public int getId() return idnumber; ,使用用户自定
14、义异常类,语默制造,public class Test_6 public void regist(int num) throws MyException if (num 0) throw new MyException(人数为负值,不合理,3); System.out.println(登记人数 + num); public void manager() try regist(100); catch (MyException e) System.out.print(登记失败,出错种类+e.getId(); System.out.print(本次登记操作结束); public static voi
15、d main(String args) Test_6 t = new Test_6(); t.manager(); ,Throw和throws的区别,语默制造,1:throws是用来声明一个方法可能抛出的所有异常信息 throw则是指抛出的一个具体的异常类型。 2:通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。 3:throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛 出。,public
16、Test() throws RepletException try System.out.println(Test this Project!) catch (Exception e) throw new Exception(e.toString(); ,final, finally, finalize的区别,语默制造,final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally(异常处理模块)再异常处理时提供 finally 块来执行任何清除操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46819-2025纺织制品中乳胶填充物通用技术要求
- 安徽省宿州市2025-2026学年九年级上学期1月期末数学试题(无答案)
- 养老院九防制度
- 企业员工培训与技能提升目标制度
- 含油钻屑处理技术
- 城市轨道交通行车值班员安全知识竞赛水平考核试卷含答案
- 化工吸附工冲突管理知识考核试卷含答案
- 中高频炉工达标水平考核试卷含答案
- 我国上市公司治理结构对融资方式的影响:理论、实证与优化策略
- 酶制剂制造工安全文明考核试卷含答案
- 2026年乡村医生传染病考试题含答案
- DB32-T 4733-2024 数字孪生水网建设总体技术指南
- AQ-T7009-2013 机械制造企业安全生产标准化规范
- 小学美术与心理健康的融合渗透
- 图书馆室内装修投标方案(技术标)
- 储罐组装施工措施方案(拱顶液压顶升)-通用模版
- 2023年上海铁路局人员招聘笔试题库含答案解析
- 质量源于设计课件
- 2023届高考语文复习-散文专题训练-题目如何统摄全文(含答案)
- 马鞍山经济技术开发区建设投资有限公司马鞍山城镇南部污水处理厂扩建工程项目环境影响报告书
- GB/T 615-2006化学试剂沸程测定通用方法
评论
0/150
提交评论