2011-10-18 11 views
6

にコンソールからコードを実行するときにエラーのスタックトレースを取得します。私はコンソールから関数を呼び出していますが、それは例外をスローしたときに、私はコードが正常に実行されたかどうのように、私は、スタックトレースを受けていないクロム

は、私はそれが私にこの情報を提供するために持っている(おそらくのtry/catchで)私のコマンドを変更することができますが方法は何ですか?

page.js:

function otherStuff() { return ['a','b',undefined,'c']; 
function doStuff() { 
    var x = otherStuff(); 
    var z = parseInt(x[2]); // this will throw an error 
} 

コンソール、page.js

> otherStuff(); 

をリンクするHTMLページをロードした後、私はから行番号を取得していないを明確にする

エラーが私に返されます。 (コンソールの代わりに)ページから実行すると、私は行番号とスタックトレースを受け取ります。

+0

コマンドは何ですか?どのバージョンのクロムですか? (母親の旧姓は何ですか?) – Neal

+0

私の答えの更新を見てください。 – Neal

答えて

11

冗長が、これはクロムJSコンソールでインタラクティブなエラーのスタックトレースを出力します:非Errorオブジェクトがスローされた場合

try { 
    throw new Error(); 
} catch (e) { 
    console.error(e.stack); 
} 

残念ながら、これは動作しません。

+0

これは非常にうまくいきます。データは異なった形式になっていますが、そこではすべて(私にとって最も重要なのは行番号です)です。 'Error'以外のオブジェクトがスローされた場合、スタックトレース情報が失われます。この場合、 'Error'オブジェクトから取得するので、 –

+0

はい、JSの標準エラーオブジェクトに基づいていないカスタムエラーオブジェクトでも同じです。そのような運私は怖いん - 私は 'Chromeは内部的に1を使用することができ、適切な例外オブジェクトのいくつかの並べ替えを作成するかどうかを確認しようとすると、文字列をthrow'ingとき' catch'句にブレークポイントを設定してみました。 – millimoose

+1

ちょうどメモ:MobileSafariはエラーに「スタック」プロパティを提供していないようです。 –

2

あなたはあなたのコード内のエラーを持っています。

あなたは閉じ括弧が欠落しています

function otherStuff() { return ['a','b',undefined,'c']; //} where am i? 
function doStuff() { 
    var x = otherStuff(); 
    var z = parseInt(x[2]); // this will throw an error 
} 

サイドポイントを:

parseInt(undefined)ないがエラーをスローしません。ポイントでの場合:http://jsfiddle.net/maniator/Zequj/2/

+0

正しい、それは性急な悪い例でした。 –

関連する問題

 関連する問題