错误和中断处理
用 Wolfram Symbolic Transfer Protocol (WSTP) 存放数据时,会出现各种错误. 任何错误出现时,WSTP 就进入一个完全静止的状态,所有的 WSTP 函数立即返回 0.
int WSError(WSLINK link) | 返回一个表面当前错误的数,无错误时返回 0 |
char* WSErrorMessage(WSLINK link) | 返回一个描述当前错误的字符串 |
int WSClearError(WSLINK link) | 清除当前错误,可能时让 WSTP 返回活动状态 |
在进行复杂运算时,仅在末尾检查错误通常是方便的. 当发现有错误时,必须用 WSClearError() 去重新激活 WSTP.
int WSNewPacket(WSLINK link) | 跳到当前包的结尾 |
发生错误后,一般要放弃当前处理的包或表达式的剩余部分,这可以用 WSNewPacket() 来实现.
在处理某些数据时若出现错误,随后还有可能用不同的方式重新处理这些数据. 达到这一要求的过程是先调用 WSCreateMark() 在第一次处理数据之前产生一个标记,再调用 WSSeekMark() 在重新处理数据时找出这些标记. 但不能忘记在这些数据处理完成后调用 WSDestroyMark(),否则 WSTP 将一直保存着它.
WSTP 无法自动退出给定的外部函数调用. 所以,当一个函数运行时间很长时,应该经常检查 WSAbort,发现这个变量被设置后就从该函数返回.