0

一种情况下可以检查参数如下

public abstract class AbstractCHeck{
protected boolean afterObjectChecked( boolean originalResult)
    {
        return originalResult;
    }   

     protected void beforeObjectChecked(Object object)
    {
        Assert.notNull(object, getClass().getName() + " null values");

    }
    public  boolean doAllErroeFreeOperation(Object object)
    {   
        beforeObjectChecked(object); // THIS CODE PROTECT AGAINST NULL BEFORE ACTUAL METHOD IS CALLED.
        boolean result = doActualOperation(object);
        return afterObjectChecked(result);
    }
public abstract boolean doActualOperation(Object obj);

public  class mainCheck extends AbstractCHeck{

public  boolean doActualOperation(Object obj){

// some operation done


}
Client{
Maincheck clientprogram=new Maincheck();
clientprogram.doAllErroeFreeOperation(null); // 
}

案例二。 可以在调用实际方法并检查其值之前使用拦截器。

还有哪些其他情况可以有效地捕获运行时异常,以便客户端代码不必处理它并且可以从框架代码等通用代码中提供解决方案?

4

1 回答 1

0

您可以引入新的类型类来包装值并保证某些约束。然后将这些用作参数类型。例子):

public final class NotNull<T> {
  public final T value;

  public NotNull(T t) {
    if(t==null) throw new NullPointerException();
    value=t;
  }
}

public final class NotNegative {
  public final int value;

  public NotNegative(int i) {
    if(i<0) throw new IllegalArgumentException();
    value=i;
  }
}

public class Example {
  public void doSomethig(NotNegative ni, NotNull<String> s) {
    String str=s.value; int i=ni.value; // not checks needed
  }
}

如果值被多次使用,这甚至可以节省检查开销。

于 2013-09-04T08:45:43.067 回答