试验了一下,在Safari中的Error对象拥有如下属性:
- message —— 错误提示信息
- line —— 出错代码所在行数
- sourceId —— 一个数字,不明白什么意思
- sourceURL —— 表示出错代码所在文件
- name —— 异常对象名/类型
Opera下的Error对象拥有如下属性:
- message —— 错误提示信息
- opera#sourceloc —— 出错代码所在行数
- stacktrace —— 出错堆栈信息
这两个浏览器中的Error对象已经提供了足够的信息给我们调试使用了。下面要做的就是把这两种方式结合起来,使之在不同浏览器下都能很好的汇报这些错误。
下面这段代码封装了在不同浏览器之上汇报异常的功能:From:站长教学网 Eduyo.com
<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>(责任编辑:ken)