异常¶
通常情况下,抛出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对象的导数,则抛出此异常。