跳转到内容

异常

通常情况下,抛出XAD异常的函数大多提供强保证,即所涉及对象的状态保持不变,操作可以继续执行,就像抛出异常的函数从未被调用过一样。

某些函数只能提供弱保证,即对象处于未定义状态,但应用程序可以通过重新初始化对象来恢复。这种情况特别发生在用户定义的CheckpointCallback::computeAdjoint函数抛出异常时。

XAD定义了以下异常类型。

xad::Exception

class Exception : public std::runtime_error

所有XAD异常的基础类,包含标准方法const char* what() const用于返回异常信息(继承而来)。

xad::TapeAlreadyActive

class TapeAlreadyActive : public Exception

当尝试在当前线程中激活一个磁带时,而另一个磁带已处于活动状态时抛出的异常。

OutOfRange

class OutOfRange : public Exception

当参数超出可接受范围时抛出的异常。

DerivativesNotInitialized

DerivativesNotInitialized : public Exception

如果在未先设置至少一个导数的情况下尝试计算伴随导数,则抛出此异常。

NoTapeException

NoTapeException : public Exception

如果在当前线程没有活动磁带的情况下创建AReal对象的导数,则抛出此异常。