欢迎来到天天文库
浏览记录
ID:55688124
大小:562.50 KB
页数:43页
时间:2020-05-24
《Java语言程序设计实用教程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java语言程序设计实用教程第九讲异常处理本章学习要点:l理解异常的概念l掌握运用try块、catch块和finally块处理异常l掌握运用多重catch块处理异常l掌握运用嵌套try/catch块处理异常l掌握运用关键字throw和throws引发异常l掌握运用Java编写和使用自定义异3常异常的概念异常的概念l所谓异常,是指由于程序运行时发生错误,从而导致程序错误结束。–内存用完–找不到文件–网络连接故障l良好的程序除具有用户所需求的功能外,还应该具备预见并处理可能发生的各种异常的功能异常的概念lJava给程序员提供了处理运行时错误的功能,称为异常处理。没有异常处理代码的程
2、序,在运行时发生错误则可能非正常结束,引起严重问题。例如,程序将钱从储蓄账户转账到经常账户时,当钱从储蓄账户提出还未存入经常账户时,由于运行时错误,程序终止,用户就会损失掉这笔钱。异常类l在java的异常处理机制中,定义了很多用来描述和处理异常的类,称为异常类。所有的异常类都直接或间接从Throwable类继承。异常类Throwable类有两个直接子类:Error类及Exception类,后者是Java程序中需要大量处理的。Error类描述的是内部系统错误,包括动态链接失败、虚拟机错误等,Java程序不做处理。Exception类描述的是程序和外部环境引起的错误,这些错误能通过
3、程序捕获和处理l每种异常类对应着某一种或者一类错误,类中可以包含该运行的错误信息和处理错误的方法等内容。常用的RuntimeException类的子类lRuntimeException类是Exception类的子类,用来描述编程错误。如被0除等系统错误、数组下标超范围等。它一般由系统检测,用户可不做处理,系统将它们交给缺省的异常处理程序。1)算术异常ArithmeticException该异常类型在进行数学运算过程中,由于除法运算中的除数为0,则产生算术异常。2)数组越界异常IndexOutOfBandsException该异常用于在数组等数据元素有一定范围的数据存储结构中,当
4、数组存储超过指定界限时产生。3)类型转换异常ClassCastException该类异常时由于在变量类型转换过程中,被转换变量无法转换为指定类型的变量所导致。常用的RuntimeException类的子类(二)4)未找到类定义异常NoClassDefFoundException如果Java程序在编译过程中,根据Java源程序指定的包路径没有发现指定的类,则抛出该异常。5)安全异常SecurityException当Java系统检测到违反安全的行为,则抛出该异常。6)空指针异常NullPointerException除了Java类库所定义的异常类之外,用户也可以通过继承已有的异常
5、类来定义自己的异常类,并在程序中使用。Exception的方法lPublicStringtoString():返回描述当前异常对象信息的字符串lPublicStringgetMessage():返回描述当前异常对象的详细信息。lPublicvoidprintStackTrace():没有返回值,通常是在屏幕上打印输出当前异常对象使用堆栈的轨迹,即程序先后调用了好些方法。异常的处理过程l在执行某个java程序的过程中,运行时系统随时对它进行监控l每当程序运行过程中发生一个可识别的错误,即这个错误有一个异常类与之对应,系统就会产生这个异常类的一个对象,把当前的进程停止,并将这个异常
6、抛出。异常的处理过程当JAVA运行时系统得到一个异常对象时,它会寻找处理这一异常的代码,从当前方法,按堆栈的顺序从下向上查找.直到找到一个方法能够处理这种异常为止.然后把异常对象交给它进行处理.这个过程称为捕获异常。lJAVA的异常处理机制就是由捕获异常和抛出异常两部分组成。异常处理的方法Java中如何进行异常处理•Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws捕获异常抛出异常声明异常throthrow执行可能产生tryws异常的代码声明方法可能要手动抛出异常catch捕获异常抛出的各种异常无论是否发生异常,finall
7、y代码总能执行try/catch块7-1•使用try/catch块捕获异常,分为三种情况:第一种情况trypublicvoidmethod(){try{//代码段(此处不会产生异常)}catch(异常类型ex){//对异常进行处理的代码段catch}//代码段}try/catch块后的代码段publicclassAccpExtcrepytio/nc{atch块7-2publicstaticvoidmain(String[]args){•使用Sy示stem例.ou模t.pr拟int("第请输一
此文档下载收益归作者所有