大域脱出
catch
と throw
throw
が例外の場合の rise
に相当し、catch
が begin
節に相当する。
throw
が実行されると、同名のラベルが指定されている catch
まで呼び出しスタックをたどり、見つかった場合は、そのブロック内における後続の処理をスキップする。
ラベルには、シンボル、文字列が指定できる。対応するラベルが見つからない場合は、NameError
が発生する。
また、throw
にはラベル以外に値を引数として渡すことができる。
throw
に渡した値は catch
の戻り値にできる。