<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite>AnyEvent - search.cpan.org</cite> (<time>2017-02-06 18:19:25 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://search.cpan.org/dist/AnyEvent/lib/AnyEvent.pm#CONDITION_VARIABLES">http://search.cpan.org/dist/AnyEvent/lib/AnyEvent.pm#CONDITION_VARIABLES</anchor-external></li></ul></refs><section><h1><code>-&gt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cb</anchor></code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 他の <code>AnyEvent</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">コールバック</anchor>と同じく、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>ないことが期待されています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>られた場合の扱いは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実装</anchor>依存です。</p></section><section><h1><code>-&gt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">croak</anchor></code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を通知したい時は <code>croak</code> メソッドを呼び出すと良いです。
<code>Promise</code> における <code>die</code> に相当します。</p></section><section><h1><code>-&gt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">begin</anchor></code>/<code>-&gt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">end</anchor></code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 便利ではあるのですが、複雑なプログラムになればなるほど、見通しが悪くなってデバッグ困難になります。
できれば避けるべきです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <code>begin</code> と <code>end</code> がコード上で離れていて、
しかも複数組あったりすると、どれとどれが対応関係にあるのかさっぱりわかりません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <code>begin</code>  は1箇所で <code>end</code> は条件分岐があって複数箇所、
のような可読性の下がるコードを書いてしまいがちです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 一度しか実行されてないと思っていたつもりが実は複数回実行されるコールバック内で
<code>end</code> を呼んでいた、のように気付かないうちに実行してしまうことがあります。</p></section></body></html>