js フォールト トレラント ステートメント。js エラーが発生した場合でも、エラーは表示されません (ブラウザーの右下隅に黄色の三角形の記号が表示されないようにするためです。そうしないと、ユーザー エクスペリエンスが低下します)。
次のようにコードをコピーします。
window.onerror=function(){true を返す;}
以下は、開発者が問題を見つけやすくするために JS 例外情報を取得するためのものです。
1、試して...捕まえて...
次のようにコードをコピーします。
<script type="text/javascript">
vartxt=""
関数メッセージ()
{
試す
{
addlert("ようこそゲスト!")
}
キャッチ(エラー)
{
txt="このページにはエラーがあります。/n/n"
txt+="このページの表示を続けるには、「OK」をクリックしてください。/n"
txt+="ホームページに戻るには、「キャンセル」をクリックしてください。/n/n"
if(!confirm(txt))
{
document.location.href="/index.html"
}
}
}
</script>
2、投げる
次のようにコードをコピーします。
<script type="text/javascript">
var x=prompt("0 から 10 までの数字を入力してください:","")
試す
{
if(x>10)
「Err1」をスローします
それ以外の場合 (x<0)
「Err2」をスローします
else if(isNaN(x))
「Err3」をスローします
}
キャッチャー)
{
if(er=="Err1")
alert("エラー! 値が大きすぎます!")
if(er == "Err2")
alert("エラー! 値が小さすぎます!")
if(er == "Err3")
alert("エラー! 値は数値ではありません!")
}
</script>
3、エラー時:
次のようにコードをコピーします。
<script type="text/javascript">
onerror=ハンドルエラー
vartxt=""
関数 handleErr(msg,url,l)
{
txt="このページにはエラーがあります。/n/n"
txt+="エラー:" + msg + "/n"
txt+="URL: " + URL + "/n"
txt+="行:" + l + "/n/n"
txt+="続行するには「OK」をクリックしてください。/n/n"
アラート(テキスト)
trueを返す
}
関数メッセージ()
{
addlert("ようこそゲスト!")
}
</script>
jsでの例外処理
例外処理には JavaScript で try...catch を使用できます。例えば:
try { foo.bar();} catch (e) {alert(e.name + ": " + e.message);}
現在、発生する可能性のあるシステム例外は主に次の 6 種類です。
EvalError: eval() のコードの実行中にエラーが発生したときに発生します。
RangeError: 数値変数またはパラメータが有効範囲外の場合に発生します。
ReferenceError: 無効な参照の参照を解除するときに発生します
SyntaxError: eval() でのコードの解析中に構文エラーが発生した場合に発生します。
TypeError: 変数またはパラメータが有効な型ではない場合に発生します
URIError: encodeURI() または decodeURI() に無効なパラメータが渡された場合に発生します
上記の 6 つの例外オブジェクトはすべて、Error オブジェクトから継承します。これらはすべて、次の 2 つの構築方法をサポートしています。
new Error();new Error("例外情報");
手動で例外をスローする方法は次のとおりです。
次のようにコードをコピーします。
試す {
throw new Error("おっと!");}
キャッチ (e) {
アラート(e.name + ": " + e.message);}
例外情報のタイプを確認したい場合は、catch で行うことができます。
次のようにコードをコピーします。
試す {
foo.bar();
} キャッチ (e) {
if (e インスタンスの EvalError) {
アラート(e.name + ":" + e.message);
else if (e インスタンスof RangeError) {
アラート(e.name + ": " + e.message);
//等
}
エラーには次の主なプロパティがあります。
description: エラーの説明 (IE でのみ使用可能)。
fileName: エラーのファイル名 (Mozilla でのみ使用可能)。
lineNumber: エラーのある行数 (Mozilla でのみ使用可能)。
メッセージ: エラーメッセージ(IEでの説明と同じ)
名前: エラーの種類。
数値: エラー コード (IE でのみ使用可能)。
stack: Java のスタック トレースのようなエラー スタック情報 (Mozilla でのみ利用可能)。
したがって、エラー メッセージをよりよく理解するために、catch 部分を次の形式に変更できます。
次のようにコードをコピーします。
試す {
foo.bar();
} キャッチ(e) {
if (ブラウザタイプ != BROWSER_IE) {
alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
} それ以外 {
alert("name: " + e.name + "errorNumber: " + (e.number & 0xFFFF) + "message: " + e.message "); } } "
JavaScript の throw コマンドは実際には任意のオブジェクトをスローでき、このオブジェクトを catch で受け取ることができます。例えば:
次のようにコードをコピーします。
試す {
throw new Date(); // 現在の時刻オブジェクトをスローします } catch (e) {alert(e.toLocaleString()) // 現在の時刻を表示するためにローカル形式を使用します
}