2016-09-06 10 views
0

ブラウザコンソールに記録されたすべてのエラー(処理済み/未処理)をキャプチャできるソリューションを探しています。JavaScriptキャプチャの処理エラー

私はwindow.onerrorと、またwindow.addeventlistener('error', function(){})を知っています。

上記のコードは、未処理のエラーのみを取り込みます。私はまた、処理されたエラーをキャプチャする必要があります。例えば

:上記の例try catch

function foo() { 
    var x = null; 
    try { 
    x.a = ""; 
    } catch (e) { 
    //Exception will be digested here. 
    } 

    var y = null 
    y.b = ""; 
} 

window.onerror = function() { 
    //Write logic for the errors logged in console. 
} 

foo(); 

がありますので、私は唯一の変数yないxためエラーになります。

catchブロックをリッスン/キャプチャする方法はありますか。

ありがとうございました

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#The_finally_clauseあなたは、ときにそれを行うことができます –

+0

デバッガを使用します。しかし、JS自身からではありません。なぜあなたはこれをしたいのですか? – Oriol

+0

本当にしたいのであれば、カスタムエラーでキャッチ後にスローして、window.onerrorに渡すことができます。例:https://fiddle.jshell.net/L29jv5fv/あなたは何をしようとしていますか? –

答えて

0

手動でwindow.onerrorを呼び出してみてください。しかし、あなたのアプローチを変えることを再考してください。これは非常に汚いです。

window.onerror = function(msg, url, lineNo, columnNo, error) { 
    if (error === 'custom') { 
    console.log("Handled error logged"); 
    return true; 
    } 
    console.log("unhandled error") 
    return false; 
}; 

例のtry/catch

var myalert = function() { 
    try { 
    console.log(f); 
    } catch (e) { 
    window.onerror('test',null,null,null,'custom'); 
    } 
    console.log("Gets here"); 
} 

https://fiddle.jshell.net/L29jv5fv/2/

0

現実は例外がキャッチされている場合、あなたのコードがそれに対処する方法を知っているので、それは問題ではないということです。

Javaのような他のプログラミング言語では、扱うことができる例外をキャッチするだけで、チェーンの上にあるすべての要素をスローしたり、コールスタックの上でさらに有用な別の例外にマップすることは常に良い方法です。例えば

function foo() { 
    var x = null; 
    try { 
    x.a = ""; 
    } catch (e) { 
    //Exception will be digested here. 
    console.log("I am writing code here but still don't know how to proceed"); 
    throw new CustomError("Something was wrong"); 
    } 

    var y = null 
    y.b = ""; 
}