Error.captureStackTrace
Test JavaScriptStackTraceApi of V8 Engine
HTML
<!--
https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
supported by JavaScript V8 Engine
Error.captureStackTrace
-->
<pre id="stack"></pre>
<pre id="loc"></pre>
JavaScript
<script type=”text/javascript”>
function reportError(err){
var errMsg = [];
for(var p in err){
if(err.hasOwnProperty(p)){
errMsg.push(p + "=" + err[p]);
}
}
alert(errMsg.join("\n"));
}
function doSomething(){
var lastErrorHandler = window.onerror;
window.onerror = function(message, url, line){
// 汇报错误
reportError({
message: message,
url: url,
line: line
});
window.onerror = lastErrorHandler;
// 不希望此错误继续扩散
return true;
}
// 不小心出错了...
sldfjlskdjflj;
window.onerror = lastErrorHandler;
}
try{
// 执行可能出错的代码
doSomething();
}catch(e){
if("\v"=="v"){
// 对于IE直接让此错误扩散到最外层
throw e;
}else{
// 对于其他任意浏览器直接汇报此异常对象
reportError(e);
}
}
</script>