1. public void autoCatch()
2. {
3. try {
4. FileInputStream fis = null ;
5. byte[] bArr = new byte[1024] ;
6. //会抛出FileNotFoundException
7. fis = new FileInputStream("D:1.txt") ;
8. //会抛出IOException
9. fis.read(bArr) ;
10. }
11. catch(Exception ex) {
12. }
13. }
1. public void autoCatch()
2. {
3. FileInputStream fis = null ;
4. byte[] bArr = new byte[1024] ;
5. try {
6. //会抛出FileNotFoundException
7. fis = new FileInputStream("D:1.txt") ;
8. //会抛出IOException
9. fis.read(bArr) ;
10. }
11. catch(FileNotFoundException ex) {
12. System.out.println("D:1.txt文件不存在,请检查") ;
13. }
14. catch(IOException ex) {
15. System.out.println("D:1.txt文件读写发生异常,异常信息为:" +
16. ex.getMessage()) ;
17. }
18. finally {
19. if(fis != null) {
20. try {
21. fis.close() ;
22. }
23. catch(IOException ex1) {
24. System.out.println("关闭文件输入流的时候发生异常,异常信息为:
25. " + ex1.getMessage()) ;
26. }
27. }
28. }
29. }
1. public void autoCatch()
2. {
3. FileInputStream fis = null ;
4. byte[] bArr = new byte[1024] ;
5. try {
6. //会抛出FileNotFoundException
7. fis = new FileInputStream("D:1.txt") ;
8. //会抛出IOException
9. fis.read(bArr) ;
10. }
11. catch(FileNotFoundException ex) {
12. }
13. catch(IOException ex) {
14. }
15. }
然后,我们再手工添加上finally代码处理块,因为资源打开后,一般需要显示关闭,以便快速释放资源。调整的最后代码如代码清单 16所示。
实战经验:
虽然可以通过Ctrl+J以模板的方式快速录入try...catch代码块,但是笔者还是倾向于用Ctrl+Shift+C自动生成异常捕捉块,这样不但提高了代码编写的速度,还保证异常捕捉代码块的规范性:为所有可能的异常分别生成一个捕捉块,且将特殊的异常放在前面,一般性的异常则放在后面。3、部署描述文件
如果你的工程中有一个Web模块,依据你所选用的Web技术可能会有多个不同的部署描述文件,你可以直接通过这些部署描述文件进行重构类名重构,如下面是一段Struts关于FormBean的部署描述信息:
代码清单 18 Struts有关formBean的部署描述文件
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)1. <struts-config>
2. <form-beans>
3. <form-bean name="untitled1ActionForm" type="myrefactor.Untitled1ActionForm" />
4. </form-beans>
5. </struts-config>
在编译器中打开需要重构的部署描述文件,将光标移到<form-bean>标签的type属性值中,点击右键->Refactoring->Rename Class for “UntitleActionForm”,如下图所示:
图 28 在部署描述文件中重构类名的对话框
在New name中键入UserActionForm,点击OK,JBuilder不但更改部署描述文件中的type属性值,还将该属性所对应的类名进行更名重构。
4、EJB
因为EJB设计器中知道一个EJB所有引用的类和接口,所以必须通过EJB设计器对EJB类进行更名。如果在编辑器或UML浏览器中对EJB文件进行重命名重构,你将看到以下的警告信息:
WARNING: You are refactoring an EJB file. This may require
that you change some source code and the deployment
descriptor by hand. We recommend using the EJB designer for
most refactoring scenarios.
如果你选择继续,则需要手工更改其他相关的文件,并同时更改部署描述文件中的相关内容,稍有不慎即会发生遗漏,所以应当尽量在EJB设计器中来重构。
5、代理
假设一个A类有一个成员类(B类),B类有一个方法foo(),如果C类想通过A类调用B类的foo()方法,则必须这样:
A aObj = new A();
aObj.bObj.foo();
实际情况可能会有更多的衔接层,为了减少这种层层嵌套间接调用所造成臃肿的代码,有时我们直接通过代理使代码显得简洁。在A类中提供一个代理方法foo(){bObj.foo();},这样C类只要这样就可以访问B类的foo()方法了:
A aObj = new A();
aObj.foo();
JBuilder提供了一个代理成员类方法的方便功能,来看下面的MultiAnimal类:
< 展开更多 (50%) 分享 猜你喜欢
下拉加载更多内容 ↓