我可以用java bean抛出异常吗?

时间:2017-06-07 21:48:26

标签: java exception javabeans propertychanged

我想通知class1,异常是否可以更改变量。我试图输入propertyChange来抛出异常,但我不能用这种方法。我怎样才能通知class1 ??

class1 - >

@Override
public void propertyChange(PropertyChangeEvent evt){
    if(evt.getNewValue().equals("var"))
       //TODO
    }else{
       //throw exception to not change var in class1
    }

class2 - >

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

2 个答案:

答案 0 :(得分:1)

您需要使用VetoableChangeListener

请参阅JavaDoc

  

public interface VetoableChangeListener扩展了EventListener

     

每当bean更改时,都会触发VetoableChange事件   “受限制”的财产。您可以注册VetoableChangeListener   源bean,以便通知任何受约束的属性   更新。

     

void vetoableChange(PropertyChangeEvent evt)                       抛出PropertyVetoException

     

当约束属性发生更改时,将调用此方法。

     

参数:       evt - 描述事件源和已更改属性的PropertyChangeEvent对象。抛出:       PropertyVetoException - 如果收件人希望回滚属性更改。

答案 1 :(得分:0)

FirePropertyChange会告诉我更改我有兴趣使用的变量或属性。您应该验证是否在同一个" setProperty"中更改变量。然后通知方法2该值已更改

的Class1

public void setProperty(int var) {

if(this.var != var && var > 0){
   propertySupport.firePropertyChange("var", this.var,var);
   this.var = var;
}else{
   System.out.println("bla bla"); 
}

}

的Class2

@Override
public void propertyChange(PropertyChangeEvent evt){
if(evt.getPropertyName().equals("var")){

   //I do something with this new variable
   System.out.print(evt.getNewValue());
}else{
   //throw exception to not change var in class1
}