- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
说明的问题 方法也可以不对异常进行捕获而直接将其抛出,并在方法声明中进行说明,那么对方法产生的异常到底是应该直接进行捕获还是应该将其进行传递呢? 一般来说,对于方法的最终调用者而言,他必须捕获并处理该方法抛出的异常。而对于抛出异常的方法而言,应该对方法可能产生的异常进行区分,尽量避免一些异常的产生,捕获并处理那些你知道如何处理的异常,而对那些你不知道方法的调用者会如何处理的异常,最好将它们留给方法的调用者进行处理,这样会增加程序的灵活性。 说明的问题 需要特别指出的是,虽然异常处理机制为程序员提供了非常大的方便,但是作为一个好的程序员要尽量避免异常的过度使用。这是因为:异常对象的实例化和其后续处理工作是非常消耗资源的,过度的使用异常会明显影响程序的执行速度。所以,在使用异常处理时应该仔细考虑,只对有必要的异常情况使用异常,而不可以将异常泛化。 两段代码的比较 代码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(); } }} 5.7 银行取款的异常处理 在定义银行类时,若取钱数大于余额则作为异常处理 class InsufficientFundsException extends Exception{ private Bank excepbank; private double excepAmount; InsufficientFundsException(Bank ba,double dAmount){ excepbank = ba; excepAmount = dAmount; } public String toString(){ String str = The balance + excepbank.getbalance() + ,The withdrawal was+excepAmount; return str; } } class Bank{ double balance; // 余额 Bank(double b){ balance = b; } public void deposite(double dAmount){ // 取钱 if (dAmount0.0) balance +=dAmount; } public void withdrawal(double dAmount) throws InsufficientFundsException{ if(balancedAmount) { throw new InsufficientFund
原创力文档


文档评论(0)