java提高篇之异常(下)-编程开发技术

java提高篇之异常(下)-编程开发技术

ID:30769157

大小:81.50 KB

页数:8页

时间:2019-01-03

java提高篇之异常(下)-编程开发技术_第1页
java提高篇之异常(下)-编程开发技术_第2页
java提高篇之异常(下)-编程开发技术_第3页
java提高篇之异常(下)-编程开发技术_第4页
java提高篇之异常(下)-编程开发技术_第5页
资源描述:

《java提高篇之异常(下)-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java提高篇Z异常(下)-编程开发技术java提高篇之异常(下)原文出处:chenssy承接上篇博文:java提高篇之异常(上)五、自定义异常Java确实给我们提供了非常多的异常,但是异常体系是不可能预见所有的希望加以报告的错误,所以Java允许我们自定义异常来表现程序屮可能会遇到的特定问题,总之就是一句话:我们不必拘泥于Java中已有的异常类型。Java口定义异常的使用要经历如卜•四个步骤:1、定义一个类继承Throwable或-其子类。2、添加构造方法(当然也可以不用添加,使用默认构造方法)。3、在某个方法类抛出该异常。4、捕捉该异常。/**口定义异常继承Excep

2、tion类**/publicclassMyExceptionextendsException{publicMyExceptionO{)publicMyException(Stringmessage){super(message);}}publicclassTest{publicvoiddisplay(inti)throwsMyException!if(i二二0){thrownewMyException(z,该值不能为0“);}else{System,out.printin(i/2);publicstaticvoidniain(String[]args){Testtest二

3、newTest();try{test,display(0);System,out.println(/z〃);}catch(MyExceptione){e.printStackTrace();运行结果:六、异常链在设计模式中有一个叫做责任链模式,该模式是将多个对象链接成一条链,客户端的请求沿着这条链传递直到被接收、处理。同样J3V3异常机制也提供了这样一条链:异常链。我们知道每遇到一个异常信息,我们都需要进行try-catch,-个还好,如果出现多个异常呢?分类处理肯定会比较麻烦,那就一个Exception解决所有的异常吧。这样确实是可以,但是这样处理势必会导致后面的维护难

4、度增加。最好的办法就是将这些异常信息封装,然后捕获我们的封装类即可。诚然在应用程序屮,我们有时候不仅仅只需要封装异常,更需要传递。怎么传递?throws!!binge,正确!!但是如果仅仅只用throws抛出异常,那么你的封装类,怎么办??我们有两种方式处理异常,一是throws抛出交给上级处理,二是try-catch做具体处理。但是这个与上而有什么关联呢?try-catch的catch块我们可以不需要做任何处理,仅仅只用throw这个关键字将我们封装异常信息主动抛岀來。然后在通过关键字throws继续抛出该方法异常。它的上层也可以做这样的处理,以此类推就会产生一条由异常

5、构成的异常链。??通过使用异常链,我们可以提高代码的可理解性、系统的可维护性和友好性。同理,我们冇时候在捕获一个异常后抛出另一个异常信息,并冃希望将原始的异常信息也保持起来,这个时候也需要使用异常链。在异常链的使用中,throw抛出的是一个新的异常信息,这样势必会导致原有的异常信息丢失,如何保持?在Throwable及其子类中的构造器中都可以接受一个cause参数,该参数保存了原有的异常信息,通过gctCauscO就可以获取该原始异常信息。语法:publicvoidtest()throwsXxxException{try{//dosomething:可能抛出异常信息的代码

6、块}catch(Exceptione){thrownewXxxException(e);}}示例:publicclassTest{publicvoidf()throwsMyException{try{Fi1eReaderreader二newFi1eReader(Z,G:\myfi1e\struts・txt〃);Searrncrin二newSeanncr(redder);System・out・println(in.next());}catch(FileNotFoundExceptione){//e保存异常信息thrownewMyException(z,文件没冇找到一01

7、",e);publicvoidg()throwsMyException{try{f0;}catch(MyExceptione){//e保存异常信息thrownewMyException(,z文件没有找到--02〃,e);}}publicstaticvoidmain(String[]args){Testt二newTest();try{t.g();}catch(MyExceptione){e.printStackTrace();运行结果:com.test9.MyException:文件没有找到--02atcom.test9.Tes

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。