- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 异常类的使用 如果采用消极处理方式,则由调用该方法的方法进行处理;但是调用该方法的方法也可以采用消极和积极两种处理方式,一直传递到Java运行环境. 异常的优点 将错误处理代码与“常规”代码分离; 将错误沿调用堆栈传递; 可以由感兴趣的方法来处理异常 对错误类型进行分组和区分。 说明的问题 方法也可以不对异常进行捕获而直接将其抛出,并在方法声明中进行说明,那么对方法产生的异常到底是应该直接进行捕获还是应该将其进行传递呢? 一般来说,对于方法的最终调用者而言,他必须捕获并处理该方法抛出的异常。而对于抛出异常的方法而言,应该对方法可能产生的异常进行区分,尽量避免一些异常的产生,捕获并处理那些你知道如何处理的异常,而对那些你不知道方法的调用者会如何处理的异常,最好将它们留给方法的调用者进行处理,这样会增加程序的灵活性。 说明的问题 需要特别指出的是,虽然异常处理机制为程序员提供了非常大的方便,但是作为一个好的程序员要尽量避免异常的过度使用。这是因为:异常对象的实例化和其后续处理工作是非常消耗资源的,过度的使用异常会明显影响程序的执行速度。所以,在使用异常处理时应该仔细考虑,只对有必要的异常情况使用异常,而不可以将异常泛化。 两段代码的比较 代码1: try { int n = InputReader.inputInteger(请输入一个整数); if (n100 || n1) throw new NumberFormatException(); }catch (NumberFormatException e) { System.out.println(输入范围错误!); } 代码2: int n = InputReader.inputInteger(请输入一个整数); if (n100 || n1) System.out.println(输入范围错误!); 代码1采用了异常处理方式;代码2则通过对用户输入的分析避免了异常的使用,提高了代码效率。 问题 下面的代码合法吗? try { ... } finally { ... } 下面的代码可以捕获何种异常?使用这种异常处理器有什么问题? catch (Exception e) { ... } 问题 下面的处理器可以捕获什么异常? } catch (Exception e) { ... } catch (ArithmeticException a) { ... } 这个异常处理器中有错误吗?此代码能否被编译? 问题 public static void cat(File named) { RandomAccessFile input = null; String line = null; try { input = new RandomAccessFile(named, “r”); while ((line = input.readLine()) != null { System.out.println(line); } return; } finally { if (input != null) { input.close(); } } } * * * * * * * * * * * * * * * * * * * * * * * * 异常的捕获过程 需要注意的是:如果try块中没有任何的异常抛出,则所有的catch子句将会被跳过;如果try块中所抛出的异常对象类型与所有的catch子句中的所声明的异常类型都不匹配,则方法会立即中止,并将该异常对象继续抛出,沿调用堆栈传递。 example public class ExampleOfException { String[] lines = {The first line, The second line,The last line}; public static void main (String[] args) { ExampleOfException eoe = new ExampleOfException(); eoe.methodA(); System.out.println(Program finished.); } ... void methodC() { for (int i=0; i4; i++) { try { System.out.print
文档评论(0)