ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の try...catch...finally_javascript テクニックを理解する

JavaScript の try...catch...finally_javascript テクニックを理解する

WBOY
リリース: 2016-05-16 15:23:38
オリジナル
1275 人が閲覧しました

この記事では、JavaScript での try...catch...finally の使用法を分析し、具体的な内容を以下に示します。

もう少し複雑ですが、条件判定を実行するには、if 条件 else という判定ステートメントを使用する必要があります。この種の判定は、プログラム コードを作成するプログラマーにはすでによく知られています。

これが非常に単純であると思われる場合は、if else 条件判定ステートメントと try catch を組み合わせてステートメントを処理することもできますが、try catch は任意のオブジェクトを処理できますが、throw を通じてエラー ステートメントをスローし、その後 catch でオブジェクトを Throw します。今日は try...catch についてのみ説明します。次の例では、それぞれ配列、時間、プロトタイプ関数、数値型などをスローします。

function trycatch () {
  var array = [234],
    newdate = new Date(),
    fun = function(){},
    is = 12.22,
    call;
  try{
    throw array + '\n' + newdate.toLocaleString() + ' \n' + fun.prototype.constructor + 
    '\n' + (typeof is == 'number') +' \n' + call ; //小心local后面还有一个'e'
  }
  catch(e){
    console.log(e);
  }
  finally{
    console.log('err finally');
  }
}
trycatch () 

// 输出:

// 234

// 2015/10/12 下午10:07:03 

// function (){}

// true 

// undefined
ログイン後にコピー

より正確には、エラーを引き起こす可能性のあるステートメントを try に置きます。 try ステートメントの実行が開始され、エラーがスローされると、catch は内部ステートメントと try 内の対応するエラー メッセージを実行します。 finally ステートメントをいつ実行するか?finally ステートメントは、try ステートメントと catch ステートメントが実行された後にのみ実行されます。try が例外をスローしたか、catch ステートメントがキャプチャされたかに関係ありません。

function trycatch () {
  try{
    throw new Error('koringz');
  }
  catch(e){
    console.log(e.message);
  }
  finally{
    console.log('err finally');
  }
}
trycatch ()
// 输出:
// koringz
// err finally
ログイン後にコピー

try を通じてエラー ステートメントをスローすると、エラー メッセージ // koringz が catch でキャプチャされることがわかりますが、最終的には // errfinal も出力されます。 try catch ワークフローの処理方法は理解できますが、finally ブロックのコード ハンドラーは理解できません。これまでのfinally ステートメントの一貫した考え方によれば、finally の出力は try と catch によって制限されません。以下は、finally のいくつかの出力デモ コードです:

function trycatch () {
  try{
    throw new Error('koringz');
  }
  finally{
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// err finally
// new finally
ログイン後にコピー

上に示したように、try はエラー ステートメントをスローし、finally の出力結果は次のようになります: // errfinally // newfinally。

function trycatch () {
  try{
    throw new Error('koringz');
  }
  catch(e){
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// err finally
// new finally
ログイン後にコピー

上記のように、try はエラー文をスローし、catch は上記のようにエラー出力結果をキャプチャします。 // やっとエラーになりました // ようやく新しいです。

try ステートメントを変更すると:

function trycatch () {
  try{
    // 
  }
  catch(e){
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// 空(viod)
// 空(viod)
ログイン後にコピー

結果として、出力は空になります。 // ボイド(ビデオ)。 try はエラーをスローしなかったため、catch は例外をキャッチしなかったため、出力結果は空になります。

次に、次の例を見てみましょう。try catch ステートメントでの例外処理をよりよく理解できるでしょう。

try{
  try{
    throw new Error('open');
  }
  catch(e){
    console.info(e.message);
    throw e
  }
  finally{
    console.log('finally');
  }
}
catch(e){
  console.log('op',e.message);
}
// open
// finally
// op open
ログイン後にコピー

エラーを引き起こす可能性のある try コード ブロック内で try catch をネストする場合は、ネストされたコード ブロック try throw new Error('open'); を通じてエラーを引き起こす可能性のあるステートメントをスローし、その後にネストされた try を渡します。ネストされたfinallyを実行すると、実際には、ネストされたcatchによってキャプチャされたエラー情報が最も外側のcatchにスローされます。 // 開いてください

つまり、指定された例外は、その例外を囲んでいる最も近い catch ブロックによって 1 回だけキャッチされます。

もちろん、「内側」ブロックでスローされた新しい例外は (catch ブロック内のコードも例外をスローできるため)、「外側」ブロックでキャッチされます。

以上がこの記事の全内容です。JavaScript プログラミングを学習する皆さんのお役に立てれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート