-
2004-08-21
简单介绍AspectJ的高级特性(三)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://befresh.blogbus.com/logs/341496.html
四、Exception softening
在Java中有两类异常:checked和unchecked exceptions。一般checked exceptions是需要我们捕获,或者重新抛出,而unchecked exceptions主要包括RuntimeException和Error,是不需要捕获的。
所谓的Exception softening就是可以把checked exceptions软化成unchecked exceptions。Exception softening的语法如下:
declare soft : <ExceptionTypePattern> : <pointcut>;
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。
随机文章:
AspectJ's declare的四种用法 2004-08-23简单介绍AspectJ的高级特性(二) 2004-08-20简单介绍AspectJ的高级特性(一) 2004-08-19AOP and annotations 2004-05-18Nanning 2004-03-19
收藏到:Del.icio.us







