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