[JavaScript]エラー処理


1.try-catch
ECMA-622第3版はtry-catch文を導入しています.基本的な文法は以下の通りです.
try {
}
catch(error) {
}
tryブロックのコードにエラーが発生したら、すぐにcatchブロックを実行します.このとき、catchブロックはエラー情報を含むオブジェクトを受信する.このエラーオブジェクトを使用しなくても、名前を付けます.オブジェクトに含まれる実際の情報はブラウザによって異なりますが、共通するのはエラーメッセージを保存するメッセージのメッセージ属性です.ECMA-622はエラータイプを保存するname属性を規定しています.すべてのブラウザはこの属性をサポートしています.
2.finally
try-catchブロックではオプションですが、finally子文は使用されると、どうしても実行されます.return文も阻止されません.例えば、
function test() {
  try {
    return 1;
  }
  catch(error) {
    return 2;
  }
  finally {
    return 3;
  }
}
3.エラーの種類
各エラーには対応するエラーの種類がありますが、エラーが発生した場合は、該当するタイプのエラーのオブジェクトが投げ出されます.ECMA-622は7種類のエラーのタイプを定義しています.
1)Error:ベースタイプ.
2)EveralErrer:eval()関数を使用して異常が発生した場合は投げます.
3)RangeError:数値が該当範囲を超えた場合は投げます.
4)ReferenceError:相手が見つからない時に投げる.
5)SyntaxError:eval()関数の文字列を使うと文法的にエラーが発生した場合、スローします.
6)Type Error:変数にハプニングタイプを保存したり、存在しない方法にアクセスしたりした場合にドロップします.
7)URIError:encodeURIまたはdecodeURI()でURIフォーマットが正しくない場合は投げます.
4.エラーの投げ方
try-catchに似合うもう一つのthrow操作子があります.カスタムエラーを出すために使います.エラーを出す時は、throwオペレータに値を指定しなければなりません.この値の種類は要求されません.例えば、
throw 123;
throw "Hello World!";
throw操作子が発生した場合、コードは直ちに実行を停止します.
5.エラーイベント
try-catchで処理されていないエラーは、いずれもwindowオブジェクトのerrorイベントをトリガします.任意のブラウザでは、Oneerrorイベントハンドラは、イベントオブジェクトを作成しませんが、エラーメッセージ、エラーメッセージのあるURLと行番号を3つのパラメータで受け入れることができます.エラーが発生すると、ブラウザで生成されたかどうかに関わらず、errorイベントを起動し、このイベントハンドラを実行します.イベントハンドラでfalseに戻ると、ブラウザがエラーのデフォルト行動を報告するのを阻止できます.
window.onerror = function(message, url, line) {
  alert(message);
  return false;
}
画像もerrorイベントに対応しており、画像のsrc属性のURLが識別可能な画像フォーマットに戻らない限り、errorイベントがトリガされる.