- 浏览: 118852 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
这两件事都有点2。只是想验证一下这种场景下,finally到底怎么执行。<br>
简单的filter链,只是为了验证。
<span style="white-space: pre;"> </span>
来看测试:
handle filter org.jport.sample.designpattern.responsebilitychain.test1filter
handle filter org.jport.sample.designpattern.responsebilitychain.test3filter
handle filter org.jport.sample.designpattern.responsebilitychain.test4filter
handle filter org.jport.sample.designpattern.responsebilitychain.test2filter
org.jport.sample.designpattern.responsebilitychain.test2filter finally
org.jport.sample.designpattern.responsebilitychain.test4filter finally
org.jport.sample.designpattern.responsebilitychain.test1filter finally
如果chain.dofilter在try{}finally{}块中,那么finally是一定会执行的。加了return后也一样。只不过return后面的语句不再执行了而已。
<div><br>
简单的filter链,只是为了验证。
public interface filter { void dofilterhttp(object request, object response, filterchain chain);}
public class filterchain { private list<filterconfig> filterconfigs = new arraylist<filterconfig>(); private iterator<filterconfig> iterator = null; public void dofilter(object request,object response){ if(this.iterator==null){ this.iterator=filterconfigs.iterator(); } if(this.iterator.hasnext()){ filterconfig config=this.iterator.next(); filter filter=config.getfilter(); filter.dofilterhttp(request, response, this); } } public void addfilterconfig(filterconfig config){ this.filterconfigs.add(config); }}
<span style="white-space: pre;"> </span>
public class filterconfig { private filter filter; public filter getfilter() { return filter; } public void setfilter(filter filter) { this.filter = filter; } }
public class test1filter implements filter { public void dofilterhttp(object request, object response, filterchain chain) { try{ system.out.println("handle filter"+this.getclass().getname()); chain.dofilter(request, response); }finally{ system.out.println(this.getclass().getname()+" finally"); } }}
public class test2filter extends test1filter {}
public class test3filter implements filter { public void dofilterhttp(object request, object response, filterchain chain) { if(true){ system.out.println("handle filter"+this.getclass().getname()); chain.dofilter(request, response); return ; } try{ system.out.println(this.getclass().getname()+" try"); }finally{ system.out.println(this.getclass().getname()+" finally"); } }}
public class test4filter implements filter { public void dofilterhttp(object request, object response, filterchain chain) { try{ if(true){ system.out.println("handle filter"+this.getclass().getname()); chain.dofilter(request, response); return ; } system.out.println(this.getclass().getname()+" try"); }finally{ system.out.println(this.getclass().getname()+" finally"); } } }
来看测试:
public class filtertest { /** * @param args */ public static void main(string[] args) { filterchain chain=new filterchain(); test1filter filter1=new test1filter(); test2filter filter2=new test2filter(); test3filter filter3=new test3filter(); test4filter filter4=new test4filter(); filterconfig config1=new filterconfig(); config1.setfilter(filter1); filterconfig config2=new filterconfig(); config2.setfilter(filter2); filterconfig config3=new filterconfig(); config3.setfilter(filter3); filterconfig config4=new filterconfig(); config4.setfilter(filter4); chain.addfilterconfig(config1); chain.addfilterconfig(config3); chain.addfilterconfig(config4); chain.addfilterconfig(config2); chain.dofilter(null, null); }}
handle filter org.jport.sample.designpattern.responsebilitychain.test1filter
handle filter org.jport.sample.designpattern.responsebilitychain.test3filter
handle filter org.jport.sample.designpattern.responsebilitychain.test4filter
handle filter org.jport.sample.designpattern.responsebilitychain.test2filter
org.jport.sample.designpattern.responsebilitychain.test2filter finally
org.jport.sample.designpattern.responsebilitychain.test4filter finally
org.jport.sample.designpattern.responsebilitychain.test1filter finally
如果chain.dofilter在try{}finally{}块中,那么finally是一定会执行的。加了return后也一样。只不过return后面的语句不再执行了而已。
<div><br>
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 986[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1524摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 596金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 732<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 914sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1221据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3496<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1427[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 698<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 936<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 960这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 767在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 776第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 901::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 965<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 702</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 861<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 749JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 848<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1123偶尔出现这个错误: <span> < ...
相关推荐
如果try块抛出的异常与catch块的异常类型匹配,那么相应的catch块的代码将被执行。 3. **finally关键字**:无论try和catch块的结果如何,finally块中的代码总会被执行。它常用于释放资源,如关闭文件、数据库连接或...
本节课程将深入探讨Java中的异常处理机制,包括异常的分类、抛出与捕获、finally块以及自定义异常。 1. **异常的分类**: Java中的异常主要分为两种类型:检查性异常(Checked Exceptions)和运行时异常...
- 行为型模式:策略、模板方法、观察者、迭代器、责任链、命令、备忘录、解释器。 以上只是《疯狂Java面试题》中可能涵盖的部分关键知识点,实际内容会更详尽,包括对每个知识点的深度剖析和面试常见问题。通过...
- 行为型模式:策略、模板方法、观察者、迭代器、责任链、命令、备忘录、解释器。 以上只是Java面试中可能涉及的部分知识点,面试时还需要结合实际项目经验、问题解决能力、技术趋势等方面进行综合考察。不断学习...
- **责任链模式**:过滤器链也可以被视为责任链模式的应用,每个过滤器都是链上的一个节点,决定是否处理数据或传递给下一个过滤器。 5. **最佳实践**: - **错误处理**:确保每个过滤器都有适当的错误处理机制,...
7. **异常链**:Java允许通过`initCause()`方法创建异常链,显示异常之间的因果关系。 通过这个"关于Java异常的练习",你可以实践如何有效地处理异常,理解何时使用不同的关键字,以及如何编写符合最佳实践的异常...
- 行为型模式(观察者、模板方法、策略、责任链、命令、迭代器、访问者) 10. 框架应用: - Spring框架的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming) - MVC架构模式的理解 - Spring Boot...
在Java编程中,异常处理是确保程序健壮性与稳定性的重要环节。然而,许多开发者在实际操作中常常陷入一些常见的异常处理误区,这不仅可能导致程序的错误难以追踪,还可能影响程序性能。以下是对Java异常处理的一些...
- 行为型模式:观察者、策略、模板方法、迭代器、责任链、命令、备忘录、解释器等。 9. **Java 8及更高版本新特性** - Lambda表达式:函数式编程的引入,简化匿名内部类。 - Stream API:处理集合数据的新方式,...
- 行为型模式:策略、模板方法、迭代器、观察者、责任链、命令、解释器、备忘录、状态、访问者。 以上是Java程序员面试中可能遇到的核心知识点,掌握这些内容将有助于在面试中展现出扎实的编程基础和解决问题的...
此外,`throws`关键字用于方法签名,表示该方法可能会抛出异常,将异常处理的责任转移给调用者。这适用于检查性异常,而不是运行时异常。 在编写异常处理代码时,有几点最佳实践需要注意: 1. 尽量避免空的`catch`...
3. 行为型模式:如策略、模板方法、观察者、责任链、迭代器、访问者、命令、备忘录、解释器模式。 十、Java新特性 1. Lambda表达式:学习如何使用匿名函数简化代码。 2. Stream API:掌握流式编程,实现更简洁的...
13. **设计模式**:了解单例、工厂、观察者、装饰者、适配器、策略、代理、建造者、责任链等经典设计模式的原理和应用场景。 14. **JVM优化**:JVM调优的基本思路,JVM参数设置,性能监控工具(jconsole, jvisualvm...
8. **异常链**:当一个异常在处理另一个异常的过程中被抛出,它们之间可以形成链式关系,提供更详细的错误信息。 9. **自定义异常**:通过创建新的异常类并继承自Exception或其子类,可以创建自己的异常类型,以便...
如果在try块中发生异常,程序将立即跳转到与该异常类型匹配的catch块。 2. **catch**:catch块用于捕获特定类型的异常。可以有多个catch块,每个捕获不同类型的异常。一旦捕获到异常,catch块内的代码将被执行。...
在方法签名中使用`throws`声明可能会抛出的检查异常,这将异常的处理责任转移到调用者。 九、全局异常处理器 在Android中,可以通过注册Application的UncaughtExceptionHandler来处理全局未捕获的异常,防止应用因...
3. 行为型模式:命令、责任链、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法模式。 以上知识点涵盖了Java达内面试题库的主要内容,每个部分都值得深入学习和实践。对于准备Java面试的程序员来说...
- 行为型模式:如策略、模板方法、访问者、迭代器、观察者、责任链、命令、解释器模式。 以上只是Java面试中的一部分常见知识点,实际面试可能还会涉及反射、并发编程、NIO、Spring框架、数据库操作、算法与数据...
- 行为型模式:模板方法、观察者、迭代器、责任链、命令、策略、状态、访问者、备忘录、解释器。 9. **反射与注解** - 反射API:Class类、Constructor类、Method类、Field类的使用。 - 注解的定义、使用和元注解...