「JavaScript/例外処理」の版間の差分

削除された内容 追加された内容
M fix lint error (use script)
4 行
throw文は例外を発生させます。
 
<sourcesyntaxhighlight lang="javascript">
function reduce(array, callback, initialValue) {
if (typeof callback != 'function') {
13 行
 
reduce([], null); // "null is not a function" とエラー
</syntaxhighlight>
</source>
 
throw文にはどんな値でも渡すことができますが、一般的には<code>Error</code>などの例外オブジェクトを渡します。例外オブジェクトは生成されるときに例外発生時の状況を記録するため、デバッグが容易になるからです。特に[[JavaScript/ReferenceError|ReferenceError]]オブジェクトや[[JavaScript/SyntaxError|SyntaxError]]オブジェクト、[[JavaScript/TypeError|TypeError]]オブジェクトなどの例外オブジェクトは、エラーの種類(参照エラーや構文エラー、型エラーなど)を明示するのに用いられます。
 
<sourcesyntaxhighlight lang="javascript">
function reduce( array, callback, initialValue ) {
if ( typeof callback != 'function' ) {
26 行
 
reduce( [], null ); // "TypeError: null is not a function" とエラー
</syntaxhighlight>
</source>
 
throw文で例外が投げられると、以降のプログラムの実行は中断され、処理系のエラーコンソールにエラーが表示されます。
33 行
try文のブロックの中で例外が発生すると、catch文のブロックが実行され、例外が捕捉されます。try文のブロックで例外が発生しなかった場合は、catch文のブロックは実行されません。catch文のブロックが実行された後も、catch文のブロックの中で例外が発生しなければ、プログラムは中断せずに以降の処理を継続します。
 
<sourcesyntaxhighlight lang="javascript">
try {
throw "エラー!";
42 行
 
alert("しかし処理は続行…");
</syntaxhighlight>
</source>
 
catch文は複数置くことができます。また、catch文は必ずエラーメッセージ''e''を受け取らなければなりません。''e''の変数名はご自由に。
49 行
finally文は事後処理を行います。try-catch文の後にfinally文を書くと、例外が発生してもしなくてもfinally文が実行されます。
 
<sourcesyntaxhighlight lang="javascript">
try {
alert("try"); // 0. "try" と警告
61 行
 
alert("outside"); // 2. "outside" と警告
</syntaxhighlight>
</source>
 
例外が発生した場合は、catch文が実行された後にfinally文が実行されます。finally文が実行された後は以降の処理を継続します。
 
<sourcesyntaxhighlight lang="javascript">
try {
alert("try"); // 0. "try" と警告
78 行
 
alert("outside"); // 3. "outside" と警告
</syntaxhighlight>
</source>
 
try文の後にはcatch文またはfinally文のいずれか、もしくは両方を置かなければなりません。catch文を除いたtry-finally文では、例外が発生してもしなくてもfinally文は実行されますが、catch文によって例外が捕捉されないので、例外が発生した場合は以降の処理を中断します。