手机版

获取错误代码所在文件的代码和Javascript中的行数

时间:2021-11-23 来源:互联网 编辑:宝哥软件园 浏览:

最初,尝试捕获被使用。在catch语句中,我们将收到一个Error对象(我们也可以抛出一个自定义异常对象)。Firefox中的error对象具有以下属性:消息——错误提示信息文件名——指示错误代码所在的文件,行号3354错误代码行stack3354错误堆栈信息名称——异常对象名称/类型,但在IE下,Error对象仅具有以下属性:名称——异常对象名称/类型,可能与Firefox中显示的名称不同。消息——错误提示信息描述——与消息属性相同。编号—— ErrorCode,错误代码,对普通开发者来说基本上没有意义。也就是说,在IE下,我们无法获得关于错误代码的文件名和错误行数的最想要的信息。后来在学校论坛咨询了一下,了解到窗户下面有一个error对象。此对象或窗口的属性绑定到错误处理函数。脚本中任何未捕获的错误最终都会扩散到窗口层,然后由onerror绑定的处理函数处理。查看相关文档后发现,绑定的错误处理函数会接受三个参数:view sourceprint?关于错误(消息、URL、行){}令人欣慰的是,这种机制与IE和Firefox兼容。下面是一个例子:复制代码如下:函数do something(){ var last error handler=window . one error;窗户。onerror=function (message,url,line) {//report error alert(执行‘URL’文件中‘line’中的代码错误,错误消息为‘message’);window . one error=LastErrorHandler;//我不希望这个错误继续蔓延;返回真;};//不小心弄错了.sldfjlskdjfljwindow . one error=LastErrorHandler;} DosMexing();

这里不使用attachEvent的原因是分离不方便。如果您希望这个错误处理是全局的,您可以使用attach event listener(火狐下的addEventListener)。需要注意的是,Safari(Chrome使用同一个内核)和Opera都不支持这种机制,而且这两个内核的浏览器都不支持全局错误事件,所以用这种方式捕捉异常信息是不可能的,只能用try-catch。经过测试,Safari中的Error对象具有以下属性:消息——错误消息行——错误代码所在的行数sourceId ——是一个数字。我不明白这是什么意思。sourceURL ——指示文件名——异常对象名称/类型Opera下的Error对象具有以下属性:消息——错误提示信息Opera # SourceLoc3354错误代码所在的行数stacktrace ——错误堆栈信息。这两个浏览器中的错误对象为我们调试提供了足够的信息。接下来要做的就是将这两种方法结合起来,这样它们就可以在不同的浏览器下很好地报告这些错误。以下代码封装了在不同浏览器上报告异常的功能:复制代码如下: script type=" text/JavaScript "函数reporter(err){ varerrmsg=[];for(var p in err){ if(err . hasown property(p)){ errmsg . push(p '=' err[p]);} } alert(errmsg . join(' \ n ');}函数doSomething(){ var lasterrhandler=window . one error;窗户。onerror=function (message,URL,line){//report error reporter({ message : message,url3360 URL,line 3360 line });window . one error=LastErrorHandler;//我不希望这个错误继续蔓延;返回真;}//不小心出了点问题.sldfjlskdjfljwindow . one error=LastErrorHandler;}尝试{ //执行可能错误的代码doSomething();}catch(e){ if('\v'=='v'){ //对于IE,直接让这个错误扩散到最外层抛出e;}else{ //对于任何其他浏览器,直接报告这个异常对象report error(e);} }/脚本

版权声明:获取错误代码所在文件的代码和Javascript中的行数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。