ブロックとExit



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は評価される。

全て見えるcatchtagは、sys:list-all-catchersから得ることができる。



throw tag value [特殊]

catchブロックから脱出またはvalueを返す。 tagvalueは評価される。


unwind-protect protected-form {cleanup-form}* [特殊]

protected-formの評価が終った後、 cleanup-formが評価される。 unwind-protectの外側にブロックまたはcatch ブロックを作っても構わない。

return-fromthrowでさえ、そのようなブロックから 抜け出すためにはprotected-formの中で実行される。 cleanup-formは、評価されることが保証されている。 また、もしprotected-formが実行されている間にエラーが起こったならば、 cleanup-formはいつもresetによって実行される。





2016-04-05