javascript怎么进行全局错误处理

在JavaScript中,可以通过绑定“window.onerrot”事件来进行页面全局error错误处理,语法格式“function 函数名(msg,url,l,c,error){//代码} window.onerror = 函数名;”。

javascript怎么进行全局错误处理

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

JavaScript引擎执行JavaScript代码时,会发生各种错误:可能是语法或拼写错误,可能是浏览器差异(使用了浏览器特有功能),也可能是服务器返回异常未处理,当然还有许多其它不可预知的因素。当错误发生时,JavaScript 引擎会中断后续代码执行,并生成一个错误消息。为了使代码更健壮,避免代码意外中断,我们需要处理各种异常。

1、局部错误处理

局部错误处理指代码可能出错的地方进行错误捕捉处理,需要程序猿进行硬code,JavaScript错误处理相关有4条语句:

1)try, catch语句,错误捕捉语句

立即学习“Java免费学习笔记(深入)”;

2)finall语句,错误捕捉处理后,return前制执行语句

3)throw语句,错误抛出语句

案例1:

try {  window.abcdefg();} catch (e) {  alert('发生错误啦,错误信息为:' e.message);} finally {//总是会被执行  alert('我都会执行!');}

登录后复制

控制台输出:

发生错误啦,错误信息为: window.abcdefg is not a function
我都会执行

finally语句在catch后,return前执行。

案例2

nbsp;html>Throw Demofunction myFunction(){try  {  var x=document.getElementById("demo").value;  if(x=="")    throw "不能为空";  if(isNaN(x)) throw "不是有效数字";  if(x>10)     throw "不能大于10";  if(x<5)      throw "不能小于5";  } catch(err) {  var y=document.getElementById("mess");  y.innerHTML="Error: " + err + ".";  }}

请输入一个5到10的数字:

登录后复制

throw的作用就是将可预见或不可预见的错误转义成用户可认知的错误。

【推荐学习:javascript高级教程】

2、全局错误处理

由于前端开发人员水平不一、代码规范程度不一,不是所有JavaScript代码都有错误处理。因此,JavaScript代码在执行过程中常常会因为不可预见异常而导致代码意外终止,为此,我们需要全局捕捉错误异常,并及时提醒开发人员修改代码。只要绑定window.onerrot事件即可进行页面全局js error错误处理,代码如下:

function globalErrorHandle(msg,url,l,c,error) {console.error("global js error: ", msg, l);      // TODO other things.}window.onerror = globalErrorHandle;

登录后复制

绑定window.onerrot事件,js报错就会调用globalErrorHandle,其中:

msg:错误消息

url:报错页面url

l:代码报错行号

c: 列号

error: 错误对象

把上文的案例1,用全局错误来捕捉,代码如下图:

在这里插入图片描述
控制台输出:
在这里插入图片描述

3、错误上报模块设计

全局错误处理并不能阻塞代码意外终止,也就是说当js执行过程中报错又没有try-catch错误处理,则会调用globalErrorHandle,但是后续代码会意外终止不再执行。因此,全局错误处理更多是全局错误记录并上报。通常做3个事情:

globalErrorHandle,全局错误捕捉;

将错误信息上报到服务器(报错页面、行号、列号等);

管理员在服务器上发现js错误信息时,责令相关人员修改;

看个案例,截图如下:

在这里插入图片描述
上图就是一个简单的js错误上报模块,错误查看页面,信息包括:错误源(哪个页面),错误描述,行号,操作系统+浏览器,操作人,操作时间等。

有几个注意事项:

1)上报内容过滤

如上图所示,好多错误信息都是一样的,如果在某个大循环里不断的在触发错误,则会不断向服务器发送错误信息,因此错误信息发送前先做过滤,操作如下:

页面加载时,先获取 错误源+错误描述 hashcode 去重列表;全局错误捕捉时,生成的错误源+错误描述 hashcode是否已经存在,不存在则上报错误消息;

2)上报哪些内容

为了错误重现,建议尽可能使错误信息详细,至少应包含:

错误页面url错误描述、错误行号、列号、stack信息浏览器和操作系统信息操作时间,甚至操作人、参数

更多编程相关知识,请访问:编程视频!!

以上就是javascript怎么进行全局错误处理的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2714417.html

(0)
上一篇 2025年3月7日 21:33:37
下一篇 2025年2月25日 18:37:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript怎么禁止缓存

    方法:在js文件url后加问号和随机数字,例“a.js?223”。原理:在资源的url后面加上数字,对文件加载不会有影响,但如果数字发生改变,浏览器就会认为这是一个全新文件,会重新下载缓存,所以加数字的作用是强制浏览器调用新地址,防止缓存。…

    2025年3月7日
    200
  • javascript怎么实现按钮点击进行跳转

    方法:1、给按钮元素添加“onclick=”location.href=’url’””语句进行跳转。2、首先给按钮元素绑定点击事件;然后指定触发点击事件时,会执行的函数;最后在执行函数中,使用“locat…

    2025年3月7日
    200
  • javascript可以获取input的值吗

    javascript可以获取input的值,方法:首先使用“document.getElementById(“id值”)”语句获取到input元素对象;然后使用“input元素对象.value”语句来获取input元…

    2025年3月7日
    200
  • 教你一招吃通javascript正则表达式

    本篇文章给大家详细介绍一下吃通javascript正则表达式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 正则表达式的作用 简单来讲正则表达式的作用就是进行字符串的增删改查,虽然javascritpt语言已经有及…

    2025年3月7日 编程技术
    200
  • 一招搞定JavaScript猜数字小游戏

    本篇文章给大家详细介绍一下搞定javascript猜数字小游戏的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 JavaScript 猜数字小游戏 在1~10中随机抽取一个数字,(抽取的数字可以在控制台查看)只有十次…

    2025年3月7日
    200
  • 如何实现网页标题闪烁效果

    本篇文章给大家详细介绍一下实现网页标题闪烁效果的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 代码 // 获取当前网页标题    // console.log(document.title);    // docu…

    2025年3月7日
    200
  • js怎么设置css实现隐藏

    实现方法:首先使用“document.getElementById(“id值”)”语句获取指定元素对象;然后使用“元素对象.style.display=”none””语句即可控制css,实现隐…

    2025年3月7日
    200
  • 教你一招实现简单计算器

    本篇文章给大家详细介绍一下javascript实现简单计算器的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 JS实现简单计算器 页面布局设计(HTML+CSS)   由于在之前的博客中有对html和css进行详细的…

    2025年3月7日 编程技术
    200
  • 详解JS中值传递和引用传递的区别

    本篇文章带大家详细了解一下javascript中值和引用传递的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在JavaScript中,可以通过值和引用传递。两者之间的主要区别是,按值传递发生在赋值基本类型的时候,而…

    2025年3月7日
    200
  • javascript如何利用sum函数求和

    方法:1、使用对象arguments配合sum函数,语法“sum(参数){return arguments[下标]+arguments[下标]}”;2、sum函数中直接使用“+”,语法“sum(参数列表){return 参数1+参数2}”。…

    2025年3月7日
    200

发表回复

登录后才能评论