ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の try...catch...finally_javascript テクニックを理解する

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

WBOY
WBOYオリジナル
2016-05-16 15:23:381242ブラウズ

この記事では、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 プログラミングを学習する皆さんのお役に立てれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。