简单介绍AspectJ的高级特性(三) :: 寸心知
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=341496 存档链接: https://web.archive.org/web/20041030110137id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=341496
寸心知 文章千古事,得失寸心知 <<<简单介绍AspectJ的高级特性(二) | 首页 | AspectJ's declare的四种用法>>> 简单介绍AspectJ的高级特性(三) 四、 Exception softening 在Java中有两类异常:checked和unchecked exceptions。一般checked exceptions是需要我们捕获,或者重新抛出,而unchecked exceptions主要包括RuntimeException和Error,是不需要捕获的。 所谓的Exception softening就是可以把checked exceptions软化成unchecked exceptions。Exception softening的语法如下: declare soft : : ; Exception softening可以应用在一些特殊场合。譬如:在DAO层,程序一般会抛出SQLException,如果这是涉及到核心处理,你就可以进行软化,把SQLException软化成unchecked exceptions。 下面,介绍一种非常神奇的特性: 五、 Privileged aspects 在AspectJ中,aspect的访问规则与Java class是相同的,使用private声明的field、method等,在别的类中是不能访问的。 但是,在有一些场合,你一定需要访问别的类中的private内容,那该怎么办呢?AspectJ为我们提供了“privileged”关键字。只要你在aspect前加上这个关键字,你就可以访问到私有数据。示例如下: public class PrivilegedData { private String _id = "private"; public void method1() { System.out.println("PrivilegedData.method1"); } } public privileged aspect PrivilegedDataAspect { before(PrivilegedData callee) : call(void PrivilegedData.method1()) && target(callee) { System.out.println("<PrivilegedDataAspect:before objectId=""+ callee ._id
- """); } } 在上面的例子中,PrivilegedDataAspect就访问了PrivilegedData中的private field,红色_id就是一个private field。 befresh @ 2004-08-21 15:57 引用Trackback(0) | 编辑 评论 发表评论 最后更新 Grash 合肥归来 AspectJ's declare的四种用法 简单介绍AspectJ的高级特性(三) 简单介绍AspectJ的高级特性(二) 简单介绍AspectJ的高级特性(一) 轻量级JMS消费者框架 关于JavaScript重名函数的sugar JMS SOAP JNDI File System Service Provider