使用注释为方法强制执行throw语句

时间:2013-11-12 11:30:30

标签: java exception annotations aspectj

我目前正在实现一个系统,我在其中使用aspectJ来检查是否允许用户调用方法。我的方法看起来像这样:

@Constrained(
    mayUsers = {Constrained.Types.ADMIN, 
    Constrained.Types.SELLER, Constrained.Types.ORGANIZER}
)
public boolean save() {
    /* code */
}

我可以使用AspectJ拦截消息调用并进行检查,但如果不允许调用,我想抛出异常。如果我只是抛出Exception,则该方法的用户不会被告知可能被抛出的Exception

现在我的问题是:

是否可以强制执行@Constrained注释的每个方法都会抛出特定的Exception

1 个答案:

答案 0 :(得分:2)

  

是否可以强制执行具有该方法的每个方法   @Constrained Annotation会抛出特定的异常吗?

现在无法做到这一点。但是您可以做的是,在运行时,您可以检查具有此批注的所有方法是否必须抛出异常。如果任何方法没有声明throws子句,你可以抛出一些Illegal*Exception告诉开发人员每个方法必须声明throws子句。

您有两种解决方案: