block tag {form}* [特殊]
-
-
return-fromによって脱出可能なローカルブロックを作る。
tagは、ローカルにスコープされ、評価されない。
return-from tag value [特殊]
-
-
tagによって示されたブロックを脱出する。
return-fromは、関数やメソッドから脱出するときに使用される。
関数やメソッドは、その本体をすべて取り囲んだ部分をブロックとして
自動的に確定され、その関数またはメソッドの名前を付ける。
return value [マクロ]
-
-
(return x)は、(return-from nil x)と同等である。
loop, while, do, dolist, dotimesは、暗黙的にNILと名前が付けられた
ブロックとして確定されるため、これらの特殊書式と組み合わせて使用する。
catch tag {form}* [特殊]
-
-
throwによって脱出または値を返すための動的なブロックを確定する。
tagは評価される。
全て見えるcatchのtagは、sys:list-all-catchersから得ることができる。
throw tag value [特殊]
-
-
catchブロックから脱出またはvalueを返す。
tagとvalueは評価される。
unwind-protect protected-form {cleanup-form}* [特殊]
-
-
protected-formの評価が終った後、
cleanup-formが評価される。
unwind-protectの外側にブロックまたはcatch
ブロックを作っても構わない。
return-fromやthrowでさえ、そのようなブロックから
抜け出すためにはprotected-formの中で実行される。
cleanup-formは、評価されることが保証されている。
また、もしprotected-formが実行されている間にエラーが起こったならば、
cleanup-formはいつもresetによって実行される。
2016-04-05