我在此处的 Redhawk 前端接口文档中看到,如果相应的操作不成功,调用 allocateCapacity() 和 deallocateCapacity() 意味着抛出某些异常。然而,Redhawk 1.9 中的当前代码生成(以及从它的外观来看,在当前开发中)表明开发人员应该使用在分配属性上调用 setAllocator() 的范式和分配器对象。分配器接口如下:
public interface Allocator<E> {
public boolean allocate(E capacity);
public void deallocate(E capacity);
}
这些方法不会抛出(检查的)异常类型 InvalidCapacity 和 InvalidState。我期望能够在我的 allocate() 和 deallocate 的实现期间抛出这些调谐器分配结构属性,并让它们传播到 allocateCapacity() deallocateCapacity() 调用,但是分配器接口上缺少 @throws 语句阻止我这样做。
我的问题是:
- 我认为开发人员应该使用 setAllocator() 方法是否正确?
- 如果是这样,有没有办法在分配器实现中抛出这些检查的异常,或者我们不鼓励在非生成的代码中抛出这些异常?
2.a. 如果不鼓励抛出这些,是否有任何标准方法表明释放失败? - 如果没有,我们应该如何实施分配?在设备类中直接覆盖 allocateCapacity() 和 deallocateCapacity() 似乎是一种糟糕的方法。
我在 RHEL 5 上使用 Redhawk 1.9.0 进行开发。