java第五章异常处理_Java第五章异常处理

《Java第五章异常处理》由会员分享,可在线阅读,更多相关《Java第五章异常处理(21页珍藏版)》请在人人文库网上搜索。

1、Java程序设计,异常处理,内容,异常处理的基础知识 异常对象的抛出 异常对象的捕获 异常的分类 throw和throws 自定义异常,5.1 为什么设计异常处理机制,考虑如下读文件程序,class ReadFile public static void main(Sstring args) 打开文件; /可能失败 确定文件大小; 分配内存; 读入文件; /可能失败 关闭文件; /可能失败,问题:未对失败进行处理,改进:对失败进行处理 仍然存在的缺点: 模糊了问题求解的逻辑 语言本身对程序员无约束 层层处理的麻烦,class ReadFile public static void main(s。

2、tring args) 打开文件; /可能失败 if (失败) 失败处理1 确定文件大小; 分配内存; 读入文件; /可能失败 if (失败) 失败处理2 关闭文件; /可能失败 if (失败) 失败处理3,Java中对失败进行处理,class ReadFile public static void main(string args) try 打开文件; /可能失败 确定文件大小; 分配内存; 读入文件; /可能失败 关闭文件;/可能失败 catch(打开文件失败)失败处理 catch (读文件失败)失败处理 catch(关闭文件失败)失败处理,5.2 异常对象的抛出,抛出异常:当程序发生异常。

3、时,产生一个异常事件,Java系统自动产生一个异常对象,然后将这个对象传递给Java运行时系统,这个例外产生和提交的过程称为抛出(throw)异常,public class Try1 public static void main(String args) int i = 0; int a = 5, 6, 7, 8; for (i = 0; i = 4; i+) System.out.println( a + i + = + ai); System.out.print(“this will not be outputed );,java.lang.ArrayIndexOutOfBoundsEx。

4、ception: 4 at Try1.main(Try1.java:6,5.3 异常对象的捕捉,捕获异常:当Java运行时系统得到异常对象后,它将会寻找处理这一例外的代码,找到能处理这一异常的方法后,运行时系统把当前异常对象交给该方法进行处理,该过程称为捕获(catch)异常,5.3.1 try, catch, finally,语法格式,try 代码0(含抛出异常的方法调用) catch (异常类1 e) 异常处理代码1 catch (异常类n e) 异常处理代码n finally 必须执行的代码 后续代码,1)执行代码0; 2)在执行代码0的过程中, 若无异常类的对象抛出,则执行finall。

5、y后必须执行的代码, 3)若有异常类i的对象抛出,则执行异常处理代码i, 并执行finally后必须执行的代码. 4) 执行后续代码,5.3.2 try, catch, finally示例(1,ExcDemo1.java 运行结果 注意: 有可能产生异常的代码放到try语句块中 抛出异常后,try语句块中抛出异常的语句之后的代码不被执行,程序的执行流程转向到捕获到该异常的catch语句块中,异常产生之前 数组下标越界 在catch语句之后,5.3.3 try, catch, finally示例(2,若一个方法抛出异常,但在该方法内没有捕获异常,则该异常将沿此方法的调用路径反向向上传递,直到该异。

6、常被捕获,否则,该异常将传递给Java运行系统(Java运行系统将终止程序的执行,并打印错误提示)。 示例:ExcDemo2.java 示例:NotHandled.java 待捕获异常的类型须与抛出异常的类型相匹配,程序的执行流程不会转向到不匹配的catch语句块中。 示例:ExcTypeMismatch.java,5.4 异常的分类,Error: 内存溢出,栈溢出等,程序无法捕捉,由系统处理。 Runtime Exception: 设计不当造成的问题, 本可避免的错误,如数组出界、除零错误等。这种异常java不强制要求捕捉。 其他:程序无法预料由环境因素引发的异常,如文件没找到、输入输出错误。

7、、URL格式不正常等。Java要求捕捉,5.4.1 常见异常Runtime Exception,ArithmeticException : 算术除零异常 NullPointerException: 空指针异常 ArrayIndexOutOfBoundsException,int k= 12/0,int a ; System.out.println(a0,int a = 5, 6, 7, 8; for (i = 0; i 5; i+) System.out.println( a + i + = + ai);,Shape a; a.area(,5.4.2 常见异常非Runtime Exceptio。

8、n,IOException : 输入输出异常 EOFException: 文件结束异常 FileNotFoundException:文件未找到异常,5.5 使用多个catch语句,一个try语句可以和多个catch语句相关。 通常每个catch语句用于捕获try语句中可能抛出的一种类型的异常。 示例:ExcDemo4.java,5.6 捕获子类异常,超类的catch语句可以捕获任何子类的异常 在具有多个catch的语句中,捕获超类异常的catch应该放到catch序列的最后。 示例:ExcDemo5.java,try 代码(含抛出异常的方法调用) catch (Exception e) 异常处。

9、理代码/可捕获Exception类及其子类的异常,5.7 可嵌入的try代码块,一个try代码块可以嵌入到另一try代码块中 当内部的try代码块产生的异常没有被与该try语句对应的catch语句捕获时,此异常便会传送到外部的try语句中。 示例:NestTrys.java,5.8 使用finally(1,finally代码块:try/catch语句块执行后必须执行的代码块,try 代码0(含抛出异常的方法调用) catch (异常类1 e) 异常处理代码1 catch (异常类n e) 异常处理代码n finally 必须执行的代码 后续代码,1)执行代码0; 2)在执行代码0的过程中, 若。

10、无异常类的对象抛出,则执行finally后必须执行的代码, 3)若有异常类i的对象抛出,则执行异常处理代码i, 并执行finally后必须执行的代码. 4) 执行后续代码,5.8 使用finally(2,无论何种原因退出try/catch语句块,均会执行finally语句块 由于产生异常而跳出try/catch语句块 由于return/break等语句跳出try/catch语句块 示例:FinallyDemo.java 使用finally的时机 在try语句中打开了文件 在try语句中建立了网络连接 在try语句中建立了数据库连接,5.9 使用throw语句抛出异常,throw语句格式: th。

11、row 异常对象,public class Person private int age; public Person(int age) try if (age 0) throw new Exception(Negative age!); this.age=age; catch (Exception ex) System.out.println(ex.getMessage(); public static void main(String args) Person person = new Person( -1);,5.10 throws声明,throws 申明:申明一个方法将抛出某类异常 形。

12、式: 方法中若包含某类异常的抛出语句(Err和RuntimeException类除外),若该方法不捕获该异常,则该方法必须用throws加以申明 若某方法申明将抛出某类异常(Err和RuntimeException类除外),则调用它的方法必须捕捉该类异常 示例:ThrowsDemo.java,修饰符 返回值类型 方法名(参数表) throws 异常类1,, 异常类n 方法体,void f() throws SomeException throw new SomeException();,5.11 自定义异常,异常对象像普通对象一样,也可定义自己的类 异常类都定义为Exception的子(孙)类 异常类通常都实现toString法,用于报告异常出现时显示该对象的内容 例: TestException.java。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值