JS 拦截/捕捉 全局错误 全局Error onerror

页面导航:首页 > 网络编程 > JavaScript > JS 拦截/捕捉 全局错误 全局Error onerror

JS 拦截/捕捉 全局错误 全局Error onerror

来源: 作者: 时间:2016-01-23 10:23 【

移动Web开发过程中,在真机测试时,往往会遇到一些PC调试无法重现的问题,这时候我们需要在手机上拦截错误,并有相应的输出。公司和网上都有类似的工具 类库,但如果纯粹一个简
移动Web开发过程中,在真机测试时,往往会遇到一些PC调试无法重现的问题,这时候我们需要在手机上拦截错误,并有相应的输出。
 
公司和网上都有类似的工具/类库,但如果纯粹一个简单的调试,或许不需要引入工具或类库,我们只需要知道全局拦截的原理。
 
 
 
其实很简单,就是window.onerror
 
语法:
 
onerror=handleErr

function handleErr(msg,url,l)
{
//Handle the error here
return true or false
}
 

 

 
是否显示标准的错误消息,取决于 onerror 的返回值。如果返回值为 false,则在控制台 (Script console) 中显示错误消息。反之则不会。
 
 
 
实例:
下面的例子展示如何使用 onerror 事件来捕获错误:
 
 
<>
<head>
<script type="text/javascript">
onerror=handleErr
var txt=""

function handleErr(msg,url,l)
{
txt="There was an error on this page.\n\n"
txt+="Error: " + msg + "\n"
txt+="URL: " + url + "\n"
txt+="Line: " + l + "\n\n"
txt+="Click OK to continue.\n\n"
alert(txt)
return true
}

function message()
{
adddlert("Welcome guest!")
}
</script>
</head>

<body>
<input type="button" value="View message" onclick="message()" />
</body>

</html>

 

 
 
 
另外,如果我们想在chrome控制台中直接模拟这个过程,会发现,直接使用throw new Error,无法触发这个onerror,这个可能是因为控制台的环境跟页面环境不一样。
 
但换一个方式,就可以触发了:
 
setTimeout(function(){throw new Error}, 1000)
:p
 
真够机智
 
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<