重新抛出错误
此代码段实现了一个过程,其行为类似于 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 ()=