第八章异常处理与多线程

上传人:汽*** 文档编号:548043178 上传时间:2023-04-23 格式:DOCX 页数:30 大小:228.09KB
返回 下载 相关 举报
第八章异常处理与多线程_第1页
第1页 / 共30页
第八章异常处理与多线程_第2页
第2页 / 共30页
第八章异常处理与多线程_第3页
第3页 / 共30页
第八章异常处理与多线程_第4页
第4页 / 共30页
第八章异常处理与多线程_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第八章异常处理与多线程》由会员分享,可在线阅读,更多相关《第八章异常处理与多线程(30页珍藏版)》请在金锄头文库上搜索。

1、第八章异常处理与多 线程第八章异常处理与多线程8.1异常就是Java程序在运行过程中出错,异常终止的情况.可能导致异常发生的原因有许多,如数组下标越界,空指针访问试图读取不存在的文件,网络连接中 断等.j3_27.java -数组下标越界违例(Exception)class Testpublic static void main(String口 args) String friends=lisa,bily,kessy;/创建字符维数组有3个元素值for(int i=0;i5;i+) /下标有2个越界异常发生System.out.println(friendsi);System.out.prin

2、tln(nthis is the end);Java中异常分两大类:(1)错误(Error) - JVM 系统内部错误,资源耗尽,内存溢出的严重情况,程序员 无能为力,只能让程序终止.(2)违例(Exception)-编程错误或偶然外在因素导致的一般性错误.如对负数 开方,空指针访问 试图读取不存在的文件,网络连接中断.Exception可预先预防.Java异常类层次关系图(1)运行时异常(RuntimeException)是因程序员设计或实现方式不当造成的.如 果事先检查数组元素下标不超出数组长度,异常就不会抛出.(2)非运行时异常 (Non-RuntimeException)-由编译器编译

3、时发生的异常,而不是程序本身的错 误,如IOException有时是环境造成的,如文件未找到或URL无效等.异常处理Java有两种方式: 使用try catchfinally句捕获并处理异常对象,其中finally语句可省略. 通常将可能发生异常的语句放在try语句中.(2)不需处理它生成的异常,而是向上传递,由调用它的方法来处理,使用throws 语句声明它可以抛出的异常,而不捕捉它们.j3_28.java -使用try catchfinally语句捕获数组下标越界异常并处理异常对象(也称运行时异常RuntimeException ) class Test public static voi

4、d main(String口 args) try /选定捕获异常范围String friendslisa,bily,kessy;for(int i=0;i5;i+)试图访问不存在的元素System.out.println(friendsi);/ catch语句需要一个形参,指明捕获异常类型对象,异常发生时程序执行catch 体内的语句.catch (Exception e)System.out.println(e);finally 无论异常是否发生finally体内的语句总是被执行System.out.println( Its ok!); System.out.println( Out of

5、Try!);(2) ExceptionTest3.java -非运行时异常(编译器编译时发生的异常-Java编译器从语法上要求对异常事件做出处理,否则不能通过编译)例如:ExceptionTest3.java -不能通过编译,改正为 ExceptionTest4.java 就可编译。import java.io.*;public class ExceptionTest3public static void main(String口 args) /创建字节输入流对象FileInputStream in=new FileInputStream(myfile.txt); int b;b = in.r

6、ead();/读文件while(b!= -1)System.out.print(char)b);b = in.read(); in.close();ExceptionTest4.java -(文件不存-非运行时异常)-(使用 try catch .finally语句捕获并处理异常对象)import java.io.*;public class ExceptionTest4 public static void main(String口 args) try / try语句块选定捕捉异常的范围,如执行的语句块有异常则 抛出异常对象FileInputStream in=new FileInputSt

7、ream(myfile.txt); / 执行的语句块int b; b = in.read();while(b!= -1) System.out.print(char)b); b = in.read(); in.close();catch (lOException e) 异常对象被抛出将被 catch (lOException e)语旬捕获,异常对象作为参数传入,捕获异常对象有有多种,也就是可有多个 catch 语句,止匕时为 lOException e ,System.out.println(e); /输出异常信息 finally /善后语句无论try语句是否发生异常finally语句都会执行

8、System.out.println( Its ok!); a C: kProgran F3es Xinox SoftwareJCreatorV3LEGE2001,exejaua.ioTileNotFoundException: myfile.txt (系统找不到指定的文件 Its oktj3_29.java -使用throws语句声明抛出异常对象给调用方用的 catch ()方法捕获异常并处理异常import java.io.*;class Testpublic static void main(String口 args)Test t = new Test ();tryt.readFile(

9、); /调用 readFile()方法(在调用方 readFile() 方法中的catch ()方法中捕获到这个异常并处理) catch(IOException e)System.out.println(e);System.out.println(退出!);/在readFile()方法中声明IOException异常对象,异常发生时该方法并不进行 异常处理,而是抛出异常对象给调用方readFile()方法处理,.public void readFile() throws IOException FileInputStream in=new FileInputStream(myfile.txt)

10、;/myfile.txt文件不存在int b;b = in.read();while(b!= -1)System.out.print(char)b);b = in.read();in.close(); C:1 Pro()rrTi riles Xinox SoftworcJCreatorV3LEGE2001 -exe jauaT io.FileNatFoundException niyf il t 退出!(4) Testthrow1.java-手工抛出异常 import java.io.*;public class Testthrow1static void readArray(int a,in

11、t b) 静态读数组方法如果ab手工抛出数组下标越界异常对象并调用捕捉异常方法输出异常提示try if (ab)/抛出数组下标越界异常对象并在readArray方法中的catch捕获输出很可惜超过数组范围!信息throw new ArrayIndexOutOfBoundsException (很可惜超 过数组范围!)elseint array二new inta;/创建数组长度为a的整型数组arrayb=11;/在下标号为4位置处赋值11给数组System.out.println(数组赋值成功! ); catch(ArrayIndexOutOfBoundsException e)System.o

12、ut.println(readArray方法异常提示:+ e.getMessage ();throw e; / throw e抛出错误给调用方及 main方法的readArray(4,6)方法的catch捕获public static void main(String口 args) try/调用readArray(6,4)静态方法并传递参数a=6, b=4,执行else后语句为数次组合法赋值readArray(6,4);readArray(4,6);/数组元素为4即长度为4,下标为6数组下标越界异常catch(ArrayIndexOutOfBoundsException e) System.o

13、ut.println(main 方法异常提示:+e.getMessage (); C:Program FilesXinox Software数组赋值成功!“后加”叫方法异常提示:很可惜超过数组范围! M式n方法算常擒彳艮苛喈鼠计数组范围!TL(5) j3_30.java-自定义抛出异常类 class MyException extends Exception private int idnumber;声明整型变量idnumber代表出错代码public MyException(String message, int id) /声明 MyException() 异常方法 super(messag

14、e);/返回父类信息this.idnumber = id; / MyException 对象出错 id 为 3 代表注册 人数为负值,不合理public int getId() / getId()方法,取得出错 Idreturn idnumber; class Test /在regist(int num)方法中声明 MyException异常,并抛出异常对象public void regist(int num) throws MyException if (num 0) /注册人数 0/抛出异常对象 new MyException(人数为负值,不合理,3);参数传到 MyException()方法中设置出错种类为 3并取得错误代码3,同时将抛出异常 对象给调用方的catch捕获输出异常原因即 登记失败,出错种类3throw new MyException( 人数为负值,不合理,3); System.out.println(登记人数+ num); public void manager。/管理注册方法try /设计错误及注册人数-100在调用regist(int num)方法时满足抛出异常对象,并 执行catch语句r

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号