版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java面向对象程序设计Java异常处理教学内容了解什么是异常理解异常的分类掌握异常处理理解自定义异常异常的引入本章开始学习Java的异常处理机制,在介绍异常处理机制之前,先看下面的一个引例。【例4-1】:异常案例的引入publicclassDemo4_01{ publicstaticvoidmain(String[]args){ StringCourse[]={"Java程序设计","JSP程序设计","A程序设计","C#程序设计"}; for(inti=0;i<=4;i++){ System.out.println(Course[i]); } System.out.println("\nthisistheend"); }}程序运行的结果:异常的概念Java异常是Java提供的用于处理程序中错误的一种机制。所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出(throw)异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。异常的分类Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类,Throwable又派生出Error类和Exception类。Error称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。Exception是所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获。Java异常类的类结构图如图4-1所示:
程序能处理的Exception异常类的子类,包括IOException和RuntimeException异常,RuntimeException称为运行期异常,一类特殊的异常,如被0除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大,因此由系统自动检测并将它们交给缺省的异常处理程序。异常的处理
程序在运行中一旦发生一个错误,系统会自动生成一个异常对象,这个对象封装了和这个异常相关的信息并且会被提交给JAVA运行时系统,这个过程称为抛出异常。当JAVA运行时系统接收到抛出的异常对象时,会寻找能处理这一异常的代码并把该异常对象交给其处理,这一过程称为捕获异常。JAVA的异常处理掌握5个关键字try、catch、finally、throws、throw的使用。语法格式1,try语句后面跟一个catch语句:try{//语句块;//可能产生异常的代码}catch(异常类名对象名){//语句块;//对异常的处理}finally{//语句块;}2、语法格式2,try语句后面跟多个catch语句:try{//语句块;......}catch(异常类名1对象名1){//语句块;}catch(异常类名2对象名2){//语句块;}catch(异常类名3对象名3){//语句块}catch...finall{//语句块;……}try…catch…finally的使用关于try…catch…finally结构,有以下几点说明:1)try语句块中的语句是可能发生异常的语句,或者说是需要监控的语句。如果执行到该语句块中的某条语句发生异常,则立即停止该语句块的执行,流程会根据发生异常的类型转到相应的catch语句块。2)try语句块后可以有多个catch语句块,每一个catch语句块声明其能处理的异常类型并提供了处理的方法。如果执行try语句块中的语句没有发生异常,显然所有catch语句块也不会被执行。3)“catch(异常类参数名)”这里的参数用来接收抛出异常对象的引用,通过该引用可以获取与抛出异常相关的信息。所以只有当抛出的异常类型和“catch(异常类参数名)”中异常类类型相同或者是其子类的时候该catch语句块才会被执行。4)由于异常对象与catch块的匹配是按照catch语句块的先后排列顺序进行的,有多个catch语句块时,最多只会执行其中一个,所以在处理多异常时应注意各catch语句块的排列顺序,如果处理的异常存在继承关系,应该先处理子类异常后处理父类异常,否则编译不能通过。5)finally代码块无论是否发生异常都会被执行,它为异常处理提供了一个统一的出口,所以在语句块中可以进行资源的清除工作,如关闭打开的文件或删除临时文件等。【例4-2】:通过案例来掌握try…catch…finally的使用importjava.util.InputMismatchException;importjava.util.Scanner;publicclassDemo4_02{ publicstaticvoidmain(String[]args){ try{ Scannersc=newScanner(System.in); System.out.println("输入第一个数:"); inta=sc.nextInt(); System.out.println("输入第二个数:"); intb=sc.nextInt(); System.out.println("两数相除的结果为:"+a/b); }catch(InputMismatchExceptione){//输入不匹配异常 System.out.println("你应该输入整数"); }catch(ArithmeticExceptione){//算术异常 System.out.println("除数不能为0"); }catch(Exceptione){//其他异常 System.out.println("未知名错误"); }finally{ System.out.println("程序运行结束了"); }}}程序运行的结果:throws和throw的使用throws是声明该方法可能抛出的异常,如果该方法确实有异常发生,会生成一个异常对象并自动抛出该异常,也可以采用throw显示抛出;如果自行定义异常类对象,然后强制抛出,就要采用throw关键字抛出异常。throws的语法格式:修饰符方法返回值类型方法名(参数列表)throws异常类1,…异常类n{//方法体}用throws声明该方法体可能有异常产生,如果有多个异常类,异常类之间用逗号分隔。throw关键字抛出异常的语法格式如下:thrownew异常类(参数列表);throws和throw关键字经常配合起来使用。【例4-3】:通过案例来掌握throws的使用classMaths{publicintdiv(inti,intj)throwsException{//定义除法操作,如果有异常,则交给被调用处处理inttemp=i/j;//计算,但是此处有可能出现异常returntemp;}}publicclassDemo4_03{ publicstaticvoidmain(Stringargs[])throwsException{Mathsm=newMaths();//实例化Math类对象System.out.println("除法操作:"+m.div(10,0));}}程序运行结果:【例4-4】:通过案例来掌握throws和throw的使用
publicclassDemo4_04{
publicstaticvoidprintScore(intscore)throwsException{
if(score<0||score>100){
thrownewException("输入的成绩有误,必须在0--100之间的整数");
}else{
System.out.println("该生的成绩是:"+score);
}
}
publicstaticvoidmain(String[]args){
intscore=-1;
try{
printScore(score);
}catch(Exceptione){
System.out.println("捕获的异常信息为:"+e.getMessage());
}
}
}
程序运行结果:自定义异常只需要继承Exception类就可以自定义异常类。因为JAVA中提供的都是标准异常类(包括一些异常信息),如果需要自己想要的异常信息就可以自定义异常类。【例4-5】:通过案例来掌握自定义异常类的使用classMyExceptionextendsException{//自定义异常类继承Exception类publicMyException(Stringmsg){super(msg);//调用Exception类中有一个参数的构造方法}};publicclassDemo4_05{ publicstaticvoidmain(String[]args){ try{ thrownewMyException("自定义异常。");//抛出异常 }catch(Exceptione){ System.out.println(e);//打印错误信息}}}程序运行结果:任务总结主要学习了Java的异常处理机制,学习了什么是异常,异常的分类和异常的几种处理方法,以及自定义异常。Java异常是用于处理程序中在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)的一种机制。Error称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。RuntimeException称为运行期异常,一类特殊的异常。JAVA的异常处理掌握5个关键字try、catch、finally、throws、throw的使用。throws声明该方法可能抛出的异常,throw是抛出异常。任务练习1.同一段程序可能产生不止一种异常。可以放置多个________子句,其中每一种异常类型都将被检查,第一个与之匹配的就会被执行。2.捕获异常要求在程序的方法中预先声明,在调用方法时用try-catch-______语句捕获并处理。3.java语言认为那些可预料和不可预料的出错称为_________4.按异常处理不同可以分为运行异常、捕获异常、声明异常和______几种。5.抛出异常的程序代码可以是_________类或者是JDK中的某个类,还可以是JVN.6.抛出异常、生成异常对象都可以通过__________语句实现。7.捕获异常的统一出口通过__________语句实现。8.Throwable类有两个子类:____________类和Exception类。9.对程序语言而言,一般有编译错误和____________错误两类。10.一个try语句块后必须跟__________语句块,__________语句块可以没有11.自定义异常类必须继承__________类及其子类12.从命令行得到6个整数,放入一整型数组,然后打印输出,要求:如果输入数据丌为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数大于6个的异常(数组越界),显示“请输入最多输入6个整数”。13.
(自定义异常)创建两个自定义异常类MyException1和MyException2。
要求:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版个人住房贷款担保合同汇编2篇
- 二零二五年度高效节水灌溉与机耕一体化服务合同3篇
- 医疗器械2025年度信息安全与隐私保护合同3篇
- 二零二五年度车辆抵押担保担保公司服务合同范本3篇
- 基于二零二五年度的智能家居技术服务合同2篇
- 二零二五版EPS线条工程节能评估与认证合同3篇
- 二零二五版桉树种植抚育及产品回收合同3篇
- 二零二五年度特色餐厅股权置换合同协议书3篇
- 二零二五年度航空货运服务保障合同3篇
- 二零二五版锅炉安全检查与安装服务合同范本3篇
- 2023年信息处理技术员教程
- 稽核管理培训
- 电梯曳引机生锈处理方案
- 电力电缆故障分析报告
- 中国电信网络资源管理系统介绍
- 2024年浙江首考高考选考技术试卷试题真题(答案详解)
- 《品牌形象设计》课件
- 仓库管理基础知识培训课件1
- 药品的收货与验收培训课件
- GH-T 1388-2022 脱水大蒜标准规范
- 高中英语人教版必修第一二册语境记单词清单
评论
0/150
提交评论