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

移动Web开发过程中,在真机测试时,往往会遇到一些PC调试无法重现的问题,这时候我们需要在手机上拦截错误,并有相应的输出。

公司和网上都有类似的工具/类库,但如果纯粹一个简单的调试,或许不需要引入工具或类库,我们只需要知道全局拦截的原理。

 

其实很简单,就是window.onerror
语法:

onerror=handleErr

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

浏览器是否显示标准的错误消息,取决于 onerror 的返回值。如果返回值为 false,则在控制台 (JavaScript console) 中显示错误消息。反之则不会。

 
实例:

下面的例子展示如何使用 onerror 事件来捕获错误:

<html>
<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)

真够机智

时间: 2024-11-01 18:28:57

JS 拦截/捕捉 全局错误 全局Error onerror的相关文章

JS 拦截全局ajax请求实例解析_javascript技巧

你是否有过下面的需求:需要给所有ajax请求添加统一签名.需要统计某个接口被请求的次数.需要限制http请求的方法必须为get或post.需要分析别人网络协议等等,那么如何做?想想,如果能够拦截所有ajax请求,那么问题就会变的很简单!?,少年,想法有点大胆,不过,我欣赏!直接上轮子,Ajax-hook不仅可以满足你想要的,同时可以给你更多. Ajax-hook源码地址 : https://github.com/wendux/Ajax-hook 如何使用 1.引入ajaxhook.js <scr

PHP的全局错误处理详解_php技巧

本文目的 PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率.默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有输出,在定位问题上有一定的耗时.所以,研究了一下此库的实现,发现它设定了error_reporting和set_error_handler,导致此现象.现在记录一下这两个函数的用法,作为备忘录. 背景 PHP没有类型检测,开发人员比较容易输入错误单词,引起致命错误,最终导致脚本停止执行.如

总结Node.js中的一些错误类型_node.js

前言 Node.js应用中可能会发生多种类型的错误.如:当出现语法错误或运行时错误时,会触发JavaScript错误:当试图试访问一个不存在或没有访问的文件时,会触发系统错误:除JavaScript错误和系统错误错误外,用户还可以自定义错误. 1. 错误分类 Node.js是一个JavaScript运行时平台,其应用发生错误都是一个Error实例或Error子类的实例. 在Node.js应用中,可能发生的错误有以下4类:      1.标准JavaScript错误,如:           <E

ThinkPHP提示错误Fatal error: Allowed memory size的解决方法_php实例

本文实例讲述了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法.分享给大家供大家参考.具体分析如下: 如果你的ThinkPHP提示你:致命错误(Fatal error: Allowed memory size),根据网上说的提高服务器可使用内存,我觉得都不是好的解决办法.麻烦也没必要.因为这是ThinkPHP本身存在BUG. 错误提示:Fatal error: Allowed memory size of 1073741824 bytes exh

myeclipse-MyEclipse中写js总弹出错误框,写一个字母弹一次,根本写不了代码

问题描述 MyEclipse中写js总弹出错误框,写一个字母弹一次,根本写不了代码 写js代码总是弹出 selection job titile has encountered a problem error retrieving AST from provider已经修改了window里的配置,并没有用,把js代码后空格取消也没用 解决方案 自己写的一个JS表格分页代码第一版

easy ui 的form表单如何获得 struts2自带拦截器的错误消息

问题描述 我在使用easyui+struts2编写文件上传功能,jsp页面是这样提交表单的('#form').form('submit',{url:"uploadPreviewPic",onSubmit:function(){},success:function(result){//这里的result是返回的json}}});struts.xml是这样写的<actionname="uploadPreviewPic"class="com.jwga.ac

数据结构 迷宫问题-错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)

问题描述 错误 27 error C2449: 在文件范围内找到"{"(是否缺少函数头?) #include#include #define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREAMENT 10 //存储空间分配增量#define num 10 typedef int MazeType[num][num];int curstep; //定前当前足迹MazeType m = {0000000000 typedef struct

c++-错误 1 error C2872: “less”: 不明确的符号

问题描述 错误 1 error C2872: "less": 不明确的符号 #include "stdafx.h" #include "stdio.h" #include "string.h" #include "ctype.h" #include "malloc.h" #include using namespace std; #define N 1000 typedef struct

c++-C++ 链接错误 fatal error LNK1104: 无法打开文件“mapnik.lib”

问题描述 C++ 链接错误 fatal error LNK1104: 无法打开文件"mapnik.lib" 我在mapnik项目中Debug模式下编译成功.lib文件,然后再另一个Debug项目中链接mapnik.lib,就出现了LNK1104, 而在Release状态下是成功的,(debug下的mapnik.lib文件有3个多G),试了半天了,还是一头雾水 解决方案 错误分析:LNK 1104是链接的错误,在链接一些lib或者exe文件时,如果链接路径错误或者无法打开其文件时,就会出