快速业务通道

Java编程那些事儿83——异常处理语法2 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
xception e){ //语法错误,异常已经被处理  System.out.println("字符串索引值越界"); }

Java编程那些事儿83——异常处理语法2(3)

时间:2010-03-15 csdn 陈跃峰

这里Exception类是所有异常类的父类,在匹配时可以匹配到所有的异常,所有后续的两个异常处理的代码根本不会得到执行,所以将出现语法错误。正确的代码应该为:

String s = "123"; try{  int n = Integer.parseInt(s);  System.out.println(n);  char c = s.charAt(4);  System.out.println(c); }catch(NumberFormatException e){  System.out.println("该字符串无法转换!"); }catch(StringIndexOutOfBoundsException e){  System.out.println("字符串索引值越界"); }catch(Exception e){ }

如果在程序执行时,所有的异常处理的代码都是一样的,则可以使用Exception代表所有的异常,而不需要一一进行区分,示例代码如下:

String s = "123"; try{  int n = Integer.parseInt(s);  System.out.println(n);  char c = s.charAt(4);  System.out.println(c); }catch(Exception e){  //统一的处理代码 }

在实际使用时,由于try-catch的执行流程,使得无论是try语句块还是catch语句块都不一定会被完全执行,而有些处理代码则必须得到执行,例如文件的关闭和网络连接的关闭等,这样如何在try语句块和catch语句块中都书写则显得重复,而且容易出现问题,这样在异常处理的语法中专门设计了finally语句块来进行代码的书写。语法保证finally语句块内部的代码肯定获得执行,即使在try或catch语句块中包含return语句也会获得执行,语法格式如下:

finally{  //清理代码 }

该语法可以和上面的两种try-catch语句块匹配,也可以和try语句匹配使用,和try语句块匹配的语法格式如下:

try{  //逻辑代码 }finally{  //清理代码 }

这样在执行时,无论try语句块中的语句是否发生异常,finally语句块内部的代码都会获得执行。

而只书写finally而不书写catch则会导致异常的丢失,所以最常用的异常处理的语法格式还是如下语法:

try{  //逻辑代码 }catch(异常类名 参数){  //异常处理代码 }finally{  //清理代码 }

这样就是整个异常处理部分的逻辑代码、异常处理代码和清理的代码成为一个整体,使得程序代码更加显得紧凑,便于代码的阅读和使用。

Java编程那些事儿83——异常处理语法2(4)

时间:2010-03-15 csdn 陈跃峰

最后,介绍一下使用异常处理语法时需要注意的问题:

1、书写在try语句块内部的代码执行效率比较低。所以在书写代码时,只把可能出现异常的代码书写在try语句块内部。

2、如果逻辑代码中抛出的异常属于RuntimeException的子类,则不强制书写在try语句块的内部,如果抛出的异常属于非RuntimeException的子类,则必须进行处理,其中书写在try语句块是一种常见的处理方式。

3、catch语句块中只能捕获try语句块中可能抛出的异常,否则将出现语法错误。

10.3.4 声明自定义异常类

如果JDK API中提供的已有的异常类无法满足实际的使用需要,则可以根据需要声明自定义的异常类来代表项目中指定类型的异常。

异常类在语法上要求必须直接或间接继承Exception,可以根据需要选择继承Exception或RuntimeException类,这样也设定了自定义异常类的类型。如果直接继承Exception,则属于必须被处理的异常,如果继承RuntimeException,则不强制必须被处理。当然,可以根据需要继承其它Exception的子类。

在编码规范上,一般将异常类的类名命名为XXXException,其中XXX用来代表该异常的作用。

示例代码如下:

/** * 自定义异常类 */ public class MyEx

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号