学習するには、のtry-catchを

コードの一部は、何かがうまくいかないとき、「死んだ」となります(実行を停止)し、コンソールで例外を出力します。
try..catch、それが停止するようにコードの実行をしていない間に例外をキャッチしますが、いくつかのより合理的な操作で行うことができ、例外処理を提供します。

基本的な構造

try {
   ... 尝试执行的代码 ...
} catch(e) {
    // 如果发生异常,跳到这里
   ... 异常处理 ...
} finally {
   ... 最终会执行的代码 ...
}

試します

try..catchのみ実行時エラーのために働きます

try-catchを例外をキャッチ(パース時)コード、ランタイムがキャプチャすることができます(ランタイム)例外をスローを読んで表示されません。

try..catch同期動作します

try-catch同期実行
、非同期操作の試みを言葉は、キャッチキャプチャされません。非同期操作を、のtry-catchキャプチャ異常。

try {
  setTimeout(function() {
    noSuchVariable; // 代码在这里停止执行
  }, 1000);
} catch (e) {
  alert( "won't work" );
}

setTimeout(function() {
  try {
    noSuchVariable; // try..catch 处理异常!
  } catch (e) {
    alert( "error is caught here!" );
  }
}, 1000);

エラー

  • 具体的な情報が含まれている例外ソースオブジェクトを投げます
  • 名前:コンストラクタ名、例外名
  • メッセージ:コンストラクタのパラメータ、異常内容のテキスト記述
  • スタック(非標準):現在のコールスタック、トリガー文字列、ネストされた例外コール配列を含みます。

  • カスタムスロー
    • 新しいエラー(メッセージを)投げます。
  • 例外が再び投げられます
    • キャッチのみ知られている例外キャッチし、例外の再スロー不明(教訓)
function readData() {
  let json = '{ "age": 30 }';

  try {
    // ...
    blabla(); // 预料之外的异常
  } catch (e) {
    if (e.name == "SyntaxError") { // 已知,具体异常
        alert( "JSON Error: " + e.message );
    } else {
        throw e; // rethrow (*)重新抛出(不知道如何处理它)
    }
  }
}

// 最外层捕获,将异常抛到js运行时环境
try {
  readData();
} catch (e) {
  alert( "External catch got: " + e ); // 捕获到!
}

最終的には(最終的に実行されます)

変数は、try..catch..finally内部ローカルです

聞かせて、理解されるように、tryおよびcatch定義された変数がキャッチし、そして最終的にアクセスすることができない、唯一のブロックレベルのアクセススコープで定義された変数のconst。

最後に、リターン

(例外をスロー、リターンを含む)の実行の終わりにはどのような方法でのtry..catch、最終的に実行されます

環境固有(グローバル例外)

  • nodejs
    • process.on( 'uncaughtException')
  • ブラウザ
    • window.onerror =関数(メッセージ、URL、行、列、エラー){}
      • メッセージ:例外情報。
      • URL:URLコード異常発生。
      • 行、列:エラーコードの行番号と列番号。
      • エラー:例外オブジェクト。
  • アプリケーション
    • 登録異常な記録サービス、サーバーに同期された例外情報、ログ解析、問題を特定し、解決します。

[ソースと拡張]

https://mp.weixin.qq.com/s/jHSk4UeNmQ1ih_F5vs0jdw

https://github.com/BooheeFE/weekly/issues

https://javascript.info/js

おすすめ

転載: www.cnblogs.com/malq/p/11038406.html