明经通道 Visual LISP 函数  
vl-catch-all-apply
 

将参数表传递给指定函数并截取错误

(vl-catch-all-apply 'function list)

参数

’function

函数。function 参数可以为标识 defun 的符号或 lambda 表达式。

list

表,包含要传递给函数的参数。

返回值

如果成功则返回函数调用的结果。如果出现错误,vl-catch-all-apply 返回一个错误对象。

示例

如果 vl-catch-all-apply 调用函数成功,则效果和使用 apply 一样,如下例所示:

_$ (setq catchit (apply '/ '(50 5)))
10
_$ (setq catchit (vl-catch-all-apply '/ '(50 5)))
10

使用 vl-catch-all-apply 的好处是可以截取错误,然后继续处理过程。如果使用 apply 时遇到被零除的情况,则:

_$ (setq catchit (apply '/ '(50 0)))
; 错误:除数为零

使用 apply 时出现了意外情况,将显示错误信息。

如果使用 vl-catch-all-apply 

_$ (setq catchit (vl-catch-all-apply '/ '(50 0)))
#<%catch-all-apply-error%>

vl-catch-all-apply 函数截取错误并返回一个错误对象。使用 vl-catch-all-error-message 来查看错误对象中的错误信息:

_$ (vl-catch-all-error-message catchit)

"除数为零"

参阅

本参考中的 *error*vl-catch-all-error-pvl-catch-all-error-message 函数,以及 《Visual LISP 开发人员手册》中的 错误处理

明经通道 版权所有 未经许可 不得传播

 评论