Files
krkr2doc/docs/kr2doc/contents/f_System_exceptionHandler.html
2016-09-08 17:50:19 +09:00

72 lines
5.3 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<!-- generated by to_html.pl from f_System.xml -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>exceptionHandler - 捕捉されなかった例外のためのハンドラ関数</title>
<meta name="author" content="W.Dee" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link href="funcref.css" type="text/css" rel="stylesheet" title="クラスリファレンス用標準スタイル" />
<link href="mailto:[email protected]" rev="Made" />
<link href="index.html" target="_top" rel="Start" title="トップページ" />
<link href="f_System.html" title="Systemクラス" rel="Parent" />
</head>
<body>
<h1><span class="fheader"><a name="top" id="top">System.exceptionHandler</a></span></h1><div class="para"><div>
<dl>
<dt>機能/意味</dt>
<dd>
捕捉されなかった例外のためのハンドラ関数</dd>
<dt>タイプ</dt>
<dd>
<a class="jump" href="f_System.html">Systemクラス</a>のプロパティ (読み書き可能)<br />
</dd>
<dt>説明</dt>
<dd>
 捕捉されなかった例外 (どこにも捕捉されずに吉里吉里本体に渡された例外) を処理する関数を表します。<br />
 null を指定すると、デフォルトの動作になります。<br />
 デフォルトの動作とは、
<ol> <li>非同期イベントの配信を停止する (<a class="jump" href="f_System_eventDisabled.html">System.eventDisabled</a> を 真 に設定)</li> <li>ログをファイルに出力開始する (<a class="jump" href="f_Debug_logAsError.html">Debug.logAsError</a> を呼ぶ)</li> <li>エラーを通知するダイアログボックスを表示し、スクリプトエディタでその箇所を示す</li> </ol>  です。<br />
 ハンドラ関数は引数を一つ取り、それが例外オブジェクトになります。<br />
 ハンドラ関数が指定されないか、あるいはハンドラ関数が null であるか、あるいはハンドラ関数が偽を返すと、デフォルトの動作が行われます。<br />
 ハンドラ関数が真を返すと上記のデフォルトの動作は行われません。<br />
 ハンドラ関数を実行中に非同期イベントが発生する可能性を考慮してください。吉里吉里本体が非同期イベントを処理できてしまうと、例外ハンドラを実行中に再び予期せぬ例外が発生する可能性があります。これを避けるため、通常、ハンドラ関数内でなにかを待つような処理をする場合 (吉里吉里が非同期イベントを処理する機会がある場合 )、非同期イベントの発生を停止させます。<br />
<code class="bq"><span class="weak">例:</span><br />System.exceptionHandler&nbsp;=&nbsp;function&nbsp;(e)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;どこにも捕捉されない例外がシステム側で捕捉された場合、この関数が<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;呼ばれる。e&nbsp;は例外オブジェクト。<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(e&nbsp;instanceof&nbsp;&quot;ConductorException&quot;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;コンダクタの投げた例外の場合<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.logAsError();&nbsp;//&nbsp;ログのファイルへの書き出し動作の開始など<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;event_disabled&nbsp;=&nbsp;System.eventDisabled;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.eventDisabled&nbsp;=&nbsp;true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;エラーの理由を表示させている間にイベントが発生すると<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;やっかいなのでいったんイベント発生を停止させる<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.inform(e.message);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.eventDisabled&nbsp;=&nbsp;event_disabled;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;イベントを発生するかどうかを元の状態に<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;//&nbsp;true&nbsp;を返すと本体側で例外の処理は行わなくなる<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;//&nbsp;false&nbsp;を返すと通常の例外処理<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
</dd>
<dt>参照</dt>
<dd>
<a class="jump" href="f_System_eventDisabled.html">System.eventDisabled</a><br />
<a class="jump" href="f_Debug_logAsError.html">Debug.logAsError</a><br />
</dd>
</dl>
</div></div>
<script type="text/javascript" charset="UTF-8" src="documentid.js" ></script>
<script type="text/javascript" charset="UTF-8" src="postcontent.js" ></script>
</body>
</html>