实验四异常处理和包装类的编程练习讲述_第1页
实验四异常处理和包装类的编程练习讲述_第2页
实验四异常处理和包装类的编程练习讲述_第3页
实验四异常处理和包装类的编程练习讲述_第4页
实验四异常处理和包装类的编程练习讲述_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、实验四异常处理和包装类的编程练习实验目的了解异常类的作用,掌握对异常的捕获和处理方式,了解包装类的作用和特点以及基本数 据类型与包装类的对应关系,掌握包装类的使用方法。实验要求1、理解系统异常处理的机制;2、创建自世义的异常类型:3、了解基本数据类型和包装类的对应关系:4、理解基本数据类型与包装类之间的区别和联系:5、掌握基本数据类型与包装类之间相互转换的方法。实验内容1、使用trycatch语句处理异常11、异常类型匹配的处理方式(1) 程序功能:在程序中主动产生一个ArithmeticException类型被0除的异常,并 用catch语句捕获这个异常。最后通过ArithmeticExce

2、ption类的对象e的方法 getMessage给出异常的具体类型并显示出来。(2) 程序源代码如下。public class EXP5_1 public static void main (String arg3) System, out. print In (这是一个异常处理的例子n);try int i=10;i /=0;catch (ArithmeticException e) Sys tern, ou t. prin tin (”异 常是:ge tMess age 0);finally System. out. prin tin (finally 语句被执 行);(3)编译并运行,结

3、果如图5.1所示。图5.11.2.异常类型不匹配的处理方式(1) 程序源代码如下。public class EXP5_2public static void main (String args) System. out.println( “这是一个异常处理的例子n ”); try int 1-10;i /=0 ;catch (IndexOutOfBoundsException e) Sys tem. ou t. prin tin (”异 常是:+u ge tMess age 0);finally System, out. printin (finally 语句被执行”);)(2)编译并运行.结

4、果如图52所示。图5.2因为EXP5_2程序试图捕获一个异常类为IndexOutOfBoundsException的异常,但发 生的异常却是ArithmeticException类,所以,程序可以通过编译但在运行时,系统 会给出异常报告:报告所发生的但没有被捕获的异常。不过在此之前,其它语句和 finally语句将会被执行。1.3、包含多个catch子句的异常处理方式(1) 程序功能:在try子句中设讣两个可能出现的异常,当a为0时会发生异常。 另外一个是肯定的异常,因为数组c的长度为1,泄义c42是为法的。通过两个 catch子句分别来捕获异常。(2) 程序源代码如下。public clas

5、s EXP5_3public static void main (String args) try int a=args. length;System, out. print In (na = +a);int b=42/a;int c=l;c 42二 99;catch (Ari thmeticException e) System, out. print In (发生 了被 0 除:+e);catch (ArrayIndexOutOfBoundsException e) Sys tem. ou t. prin tin C数组下标越界: %);(3) 编译并运行,结果如图53所示。图532、使用

6、throw语句抛出异常在上而的实验中,可以发现,异常对象是Java运行时由系统抛出的。抛出异常也可 以通过使用throw语句实现。throw是Java语言的关键字,用来告知编译器此处要发 生一个异常。throw后而要跟一个新创建的异常类对象,用于指岀异常的名称和类型。(1) 程序源代码如下。public class EXP5_4 static void throwProcess () try throw new NullPointerExcuption (空指针异常);1/catch (NulIPointerException e) System, out. prin tin (”n任thro

7、wProcess方法中捕获” getMessage 0);throw e;)public static void main (String args) try throwProcess0;catch (NulIPointerException e) Sys tem. ou t. prin tin (再次捕获:十e);(2) 编译并运行,结果如图5.4所示。图5.43、使用throws语句throws子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系 统来处理。throws子句也可以指出抛出异常是RuntimeException或自宦义异常类, 即异常的类型,以便准备调用英它方法

8、捕获它,这种情况一般需要两个方法来分别处理 抛出异常和处理异常。(1) 程序功能:在这个程序中的mathod方法中使用throws子句抛岀异常,在main方 法中捕获处理异常。(2) 程序源代码如下。import java. io. *;public class EXP5_5static void mathod() throws II 1 egalAccessException System, out. printin (nmat hod 中抛岀一个异常);throw new IllegalAccessException 0 ;public static void main (String a

9、rgs) trymathodO ;catch (IllegalAccessException e) System, out. printin (”任 main 中捕获异常:+e);(3)编译并运行,结果如图5. 5所示。图5.54、使用finally子句当一个异常被抛出时,程序的执行流程就不再是连续的了,会跳过某些语句,甚至 会由于没有与之匹配的catch子句而过早地返回,结朿程序的运行。为了确保一段代 码不管发生什么异常都能被执行,可以使用finally子句。每个try语句至少都要有 一个与之相配的catch或finally子句。从一个方法中返回到调用它的期外一个方法,可以通过return语

10、句或通过一个没有 被捕获的异常,但finally子句总是在返回前被执行。(1) 程序功能:在类EXP5_6的mathodA方法中使用try子句捕获异常,使用f inally 子句处理异常。(2) 程序源代码如下。class EXP5_6static void mathodA 0 try System, out. print In (nmathodA 抛出个异常); throw new Run timeExcep tion 0 ;finally Sys tem. ou t. prin tin (”执 行 ma thodA 的 finally ”); )static void mathodB0 t

11、rySys tem. ou t prin tin (ma thodB 正常返回”); return;finally Sys tem. out. prin tin (”执 行 ma thodB 的 finally ”);)public static void main (String args J) try ma thodA 0 ; catch (Exception e) ma thodB 0 ;J/zJ/z(3) 编译并运行,结果如图56所示。图565. 创建自定义的异常类(1)程序功能:通过继承Exception异常类创建一个自加义异常类MyException,然后再创建一个主类EXP5_7

12、使用自左义异常类MyExceptiono(2)程序源代码如下。class MyException extends Exception private int x; MyExc ept ion (int a) x=a;public String toString 0 return 自定义异常类如”;public class EXP5_7 static void mathod (int a) throws My Exception System, out. printin (t 此处引用 mat hodif (a10) throw new MyException (a); / 主动抛岀MyExce

13、ptionSys tern, ou t prin tin (正常返回”);public static void main (String argsJ) try System, out. printin Cn进入监控区,执行可能发生异常的程序段”); mathod(8);mathod(20);mathod(6);catch (MyException e) System, out. printin Ct程序发生异常并在此处进行处理”);System, out. print In ( t 发生的异常为:+e toString 0);System, out. printin (这里可执行其它代码”);

14、(3) 编译并运行,结果如图5.7所示。,101x11文件(F)績做E)吏石M 2ifeS)格式(D)工程Q rH(T) fiC(W)帝助-lalxlh序童电心场罗E)|鸟呀亀刈邸 叫4饰咔I M1F|耳煉瞬|国辰1国国|够I 目录ID:OISK APP|丄十2一73f4十5C183W HyExcepnon exwniis Exception (privote int x;MyException|int a)(x=a;piblic String toSttinx() zetuxn 自tianr,;12 3 4 5 6a 口 3 二j rrvp3ckCrch d 烷dEF2_1.c 浪DF2 1,|ov3EXF2 1 |avs bakE410chD 10 gEXF2.10 旳 bsk 4=2_11 cb EF2J1.0、dEXP2 11 旳 bskEP2j2cb/ xF2J20、vzlcr-ztzn i - ._ u.lI EP5_7js 宅嘶肋PWMIC 01055 EXP5_7 static void nathod(int a) thxovs FlyException / $?8ce

温馨提示

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

评论

0/150

提交评论