重新抛出错误
此代码段实现了一个过程,其行为类似于 postscript 循环运算符。如果用户 proc
调用 exit
,它会捕获 invalidexit
错误以修复最后的 end
的 dictstack。通过调用 stop
重新抛出除 invalidexit
之外的任何其他错误。
% array n proc . -
% Like `forall` but delivers length=n subsequences produced by getinterval
/fortuple { 4 dict begin
0 {offset proc n arr} {exch def} forall
/arr load length n idiv
{
{
/arr load offset n getinterval
[ /proc load currentdict end /begin cvx ] cvx exec
/offset offset n add def
} stopped {
$error /errorname get /invalidexit eq
{ 1 dict begin exit }{ stop } ifelse
} if
} repeat
end
} def
%[ 0 1 10 {} for ] 3 {} fortuple pstack clear ()=