あなたのコードのコンテキストがあなたを混乱させる可能性があります。私たちは、このコードのコンテキストを示して、2番目のものを変更した場合、2番目のログステートメントと2番目に呼び出されたコードとの違いを知ることができるように出力することができます(これは私の推測です)。
そして、あなたのノードのインストールのバニラテストとして、私はあなたがこのコードのセットを取り、スローtest.jsという名前のファイルにそれを置くことを示唆していると、ちょうどそのファイルを実行したい:
// throw-test.js
try {
console.log('test1');
throw new Error('error');
console.log('test2');
} catch(e) {
console.log('log exception');
}
をあなたが
node throw-test.js
を実行すると
は、コンソールで確認する必要があります
test1
log exception
私が実行しているのNode.jsで見るまさにだと予想されるものであること。事態を混乱することができ
他のもの:
- あなたのコードが二度呼ば取得される可能性がありますし、あなたが得る出力を得る理由です。
- あなたのコードは例外を食い止める非同期コールバックの中にある可能性があります(そのため、例外が記録されることはありません)。
- あなたのコードには別の場所に
console.log('test')
があります。そのため、2つのコードが表示されます。あなたの他のコメントについては
、コード:
console.log(nonExistent);
はReferenceError
例外がスローされます。ログにその例外が表示されるかどうかは、このコードの場所によって異なります。再度、非同期コールバックの内部にある場合、例外が発生する可能性があります(特定のコールバックによって異なります)。
あなたのコードが2回呼び出されていると思われるので、最初の 'console.log( 'test');'が2回実行されます。起こっていると思われることは実際に起こっていることではないので、より多くの文脈を示す必要があります。第2の 'console.log( 'test')を' console.log( 'test2');に変更することから始めて、あなたは少なくとも1対他の実行の違いを知ることができます。二度。また、適切な文脈を見るために、このコードが何であるかを教えてください。 – jfriend00
そして 'consoleを実行する。log(nonExistent) 'はおそらく例外をスローします。その例外が非同期コールバックの内部にある場合、例外は何も記録せずに静かに奪取される可能性があります。 – jfriend00