我正在尝试使用一个非常简单的stacktrace.js示例。我正在尝试使用printStackTrace()
方法来执行此操作。
基本上,我正在调用一个错误的函数,它会在控制台中抛出错误和堆栈跟踪。但是,我希望控制台中显示的此错误和堆栈跟踪存储在字符串中,而是打印出该字符串。
例如,如果我运行此功能
function foo() {
var x = y;
}
我收到未被捕获的引用错误y is not defined
我需要将它存储在字符串中。
到目前为止,我已经尝试了以下
var error = null;
function foo(){
try {
var x = y;
} catch(e) {
error = printStackTrace(e);
}
}
foo();
console.log(error);
但它正在打印一个我不理解的不同堆栈跟踪。
使用printStackTrace
方法的正确方法是什么?
答案 0 :(得分:0)
window.onerror = function(msg, file, line, col, error) {
var callback = function(stackframes) {
var stringifiedStack = stackframes.map(function(sf) {
return sf.toString();
}).join('\n');
alert('msg: ' + msg + ' line: ' + line + ' col: ' + col + ' error: ' + error + ' file:' + file);
};
StackTrace.get().then(callback)
};
工作示例:
window.onerror = function(msg, file, line, col, error) {
StackTrace.fromError(error).then(callback).catch(errback);
}
var errback = function(err) { console.log(err.message);
};
var callback = function(stackframes) {
var stringifiedStack = stackframes.map(function(sf) {
return sf.toString();
}).join('\n'); };
function fault() {
alert('Error will be invoked!')
throw "Test Error"
};

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stacktrace.js/2.0.0/stacktrace.js"></script>
<input id="a" type="button" value="Test Call!" onClick="fault();" />
&#13;
但似乎他们有bug。