一般的な JS エラーと例外処理方法のまとめ

一般的な JS エラーと例外処理方法のまとめ

参考: https://cloud.tencent.com/developer/article/1768989

一般的な JS エラーのタイプ

  • 範囲エラー
  • 参照エラー
  • 構文エラー
  • タイプエラー

範囲エラー

(スコープ エラー) は、プログラミングにおける範囲または境界に関係するエラーまたは異常な状態を説明するために一般的に使用されるプログラミング用語です。これは、有効な範囲または境界外にあるデータ構造内のインデックスまたは値にアクセスしようとしているか、何らかの操作を実行するときに、特定のデータ型の許容範囲を超える値を取得したことを意味します。このエラーは通常、コードに問題があることを示すためにプログラミング言語で表示されます。

具体的には、「RangeError」には次のものが関係する可能性があります。

  • 配列インデックスが範囲外: 最も一般的な状況の 1 つは、配列またはリスト内の要素にアクセスしようとしたときに、存在しないインデックスを使用したか、インデックスが配列のサイズを超えている場合です。
  • 数値オーバーフロー: 数値計算では、数値オーバーフロー、つまり計算結果が特定の数値型の範囲を超えることが発生することがあります。
  • 再帰オーバーフロー: 再帰関数では、再帰呼び出しの数が多すぎると、範囲エラーとも呼ばれるスタック オーバーフローが発生する可能性があります。
  • データ型の制限: 一部のデータ型 (整数、浮動小数点数など) には特定の値の範囲があり、これらの範囲を超えると範囲エラーが発生する可能性があります。

参照エラー

(参照エラー) は、存在しない変数または識別子を参照しようとしたときに発生するプログラミングのエラーを説明するために一般的に使用されるプログラミング用語です。これは、コードが未定義の変数、関数、またはオブジェクトのプロパティを使用しようとして、参照される識別子が見つからないことを意味します。

プログラミング言語インタープリターまたは実行エンジンがコードを実行するときに、現在のスコープで宣言または定義されていない識別子が見つかると、「ReferenceError」が発生します。これは通常、次の状況によって発生します。

  • 変数が宣言されていません: 宣言されていない変数を使用しようとしました。
  • 関数未定義: 未定義の関数を呼び出そうとしました。
  • オブジェクト プロパティが未定義: オブジェクトのプロパティにアクセスしようとしましたが、プロパティが未定義です。
  • スコープの問題: 現在のスコープ外で宣言された変数にアクセスしようとしています。

「ReferenceError」を解決するには、参照される変数、関数、またはプロパティが現在のスコープで宣言または定義されていることを確認する必要があります。これには通常、正しい場所で変数を宣言したり、関数を定義したり、オブジェクト プロパティが存在することを確認したりすることが含まれます。

注: プログラミング言語が異なれば、異なるエラー名が使用される場合がありますが、「ReferenceError」は通常、プログラムが実行時に参照される識別子を解決できない、または見つけられないことを示す一般的なタイプのエラーを表します。

構文エラー

(構文エラー) はプログラミングにおける一般的なタイプのエラーで、プログラム コードの構文規則が言語仕様に準拠していない場合に発生します。これは、コードがプログラミング言語の構文規則に違反しているため、コンパイラーまたはインタープリターがコードの構造を正しく解析また​​は理解できないことを意味します。

プログラミング言語ではコードを正しく解釈して実行するために正確な構文が必要なため、構文エラーは多くの場合最も基本的なエラーの 1 つです。これらのエラーは言語の構文規則に関係するため、通常、コードがコンパイルまたは実行される前に検出されます。

タイプエラー

(型エラー) はプログラミングにおけるエラーの一種で、通常、操作または関数呼び出しに互換性のないデータ型が含まれていることを示します。TypeError は、操作のデータ型が予期された型と一致しないために、プログラミング言語が実行時に操作を実行できない場合に発生します。このエラーは通常、コードが許可されていない操作を実行しようとしているか、関数の呼び出し方法が間違っていることを意味します。

TypeError が発生する可能性のあるいくつかの状況を次に示します。

  • 型の不一致: 場合によっては、コードに特定のデータ型が必要な場合があり、一致しないデータ型が指定された場合は、TypeError が発生します。
  • プロパティまたはメソッドが存在しません: オブジェクトのプロパティにアクセスしようとしたか、オブジェクトのメソッドを呼び出そうとしましたが、プロパティまたはメソッドが存在しません。
  • サポートされていない操作: 一部の操作は、特定の種類のデータにのみ適用できます。サポートされていないデータ タイプに対して操作を実行しようとすると、TypeError が発生します。
  • パラメータがありません: 関数を呼び出そうとしたときに、必要なパラメータが指定されていない場合、TypeError が発生することがあります。
  • 反復不可能なオブジェクトの反復: 一部のプログラミング言語では、反復不可能なオブジェクトに対して反復操作を実行しようとすると、TypeError が発生する場合があります。

TypeError を解決するには、エラーをスローするコード行を見つけて、操作を実行する前にデータ型を確認するか、呼び出す関数がそのデータ型と互換性があることを確認する必要があります。ほとんどのプログラミング言語では、型チェックと例外処理メカニズムが TypeError の識別と処理に役立ちます。強く型指定された言語を使用している場合、コンパイラは通常、コンパイル時にこれらのエラーを検出しますが、弱い型指定の言語では、通常、これらのエラーは実行時に検出されません。

例外のデバッグとキャプチャ

try/catch、JS の例外処理モード。tryエラーが発生する可能性のあるコード内のエラー処理に使用されますcatch

try{
    
    
  // 可能会导致错误的代码
}catch(error) {
    
    
  // 错误处理
}

例:

try{
    
    
  console.log(a)
}catch(error) {
    
     // 打印错误信息
   throw new Error('变量a未命名!!'); // 自定义报错
  console.log(error)  // ReferenceError: a is not defined
}

throw、ユーザー定義の例外をスローするために使用され、実行が停止されます。

function getUserName(name) {
    
    
    if(!name) throw new Error('用户名无效');
    return name;
}
getUserName()

Promise例外処理は、Promise実行時に独自の例外処理がありtry...catch、エラーが発生した場合はRejact関数がエラーになります。

new Promise((resolve, reject) => {
    
    
   throw new Error('error!');
}).catch(alert);

console.log()メソッドは、ブラウザーで console.log を使用して JavaScript 値を出力します。

let value = '你最棒了,点个赞呗!'
console.log(value)

debuggerブレークポイント デバッグは、JavaScript の実行を停止し、デバッグ関数を呼び出すために使用されます。

let value = 15;
debugger
document.querySelector('body').innerhtml = '你最棒了,点个赞呗!'

おすすめ

転載: blog.csdn.net/weixin_35773751/article/details/132758834