广告
返回顶部
首页 > 资讯 > 精选 >javascript全局错误的处理方法
  • 674
分享到

javascript全局错误的处理方法

2023-06-14 14:06:04 674人浏览 八月长安
摘要

这篇文章主要介绍了javascript全局错误的处理方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript是什么JavaScript是一种直译式的脚本语言,其

这篇文章主要介绍了javascript全局错误的处理方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

JavaScript是什么

JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript是被广泛用于客户端的脚本语言,最早是在html网页上使用,用来给HTML网页增加动态功能。

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

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

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

1、局部错误处理

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

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

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

<!DOCTYPE html><html><head><meta Http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Throw Demo</title></head><body><script>function 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 + ".";  }}</script><p>请输入一个5到10的数字:</p><input id="demo" type="text"><button type="button" onclick="myFunction()">Test Input</button><p id="mess"></p></body></html>

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,用全局错误来捕捉,代码如下图:

javascript全局错误的处理方法
控制台输出:
javascript全局错误的处理方法

3、错误上报模块设计

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

  • globalErrorHandle,全局错误捕捉;

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

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

看个案例,截图如下:

javascript全局错误的处理方法
上图就是一个简单的js错误上报模块,错误查看页面,信息包括:错误源(哪个页面),错误描述,行号,操作系统+浏览器,操作人,操作时间等。

有几个注意事项:

1)上报内容过滤

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

  • 页面加载时,先获取 错误源+错误描述 hashcode 去重列表;

  • 全局错误捕捉时,生成的错误源+错误描述 hashcode是否已经存在,不存在则上报错误消息;

2)上报哪些内容

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

  • 错误页面url

  • 错误描述、错误行号、列号、stack信息

  • 浏览器和操作系统信息

  • 操作时间,甚至操作人、参数

感谢你能够认真阅读完这篇文章,希望小编分享的“javascript全局错误的处理方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: javascript全局错误的处理方法

本文链接: https://www.lsjlt.com/news/271543.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript全局错误的处理方法
    这篇文章主要介绍了javascript全局错误的处理方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript是什么JavaScript是一种直译式的脚本语言,其...
    99+
    2023-06-14
  • JavaScript常见的错误处理方法
    这篇文章主要介绍“JavaScript常见的错误处理方法”,在日常操作中,相信很多人在JavaScript常见的错误处理方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2022-10-19
  • React Native release包全局错误处理——Android篇
    当我们在开发React Native应用时,如果在调试状态下,获取错误的异常信息是非常简单的,JS异常会立即在真机上显示(或者打开调试模式在浏览器控制台中显示),原生层的jav...
    99+
    2022-06-06
    RELEASE native React Android
  • PHP出现全局异常/错误的解决方法
    小编给大家分享一下PHP出现全局异常/错误的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!异常如果我们抛出一个 Exception 而没有进行 try c...
    99+
    2023-06-20
  • java中HttpClient的错误处理方法
    这篇“java中HttpClient的错误处理方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java中HttpClien...
    99+
    2023-06-30
  • Vue全局监测错误并生成错误日志实现方法介绍
    目录一、准备工作(1)规定错误码(2)设置错误处理函数(3)保存错误日志二、监听错误(1)JS错误与静态资源加载错误(2)Vue逻辑错误(3)请求错误与Promise错误三、效果演示...
    99+
    2022-11-13
    Vue全局监测错误 Vue生成错误日志
  • mybatis错误处理的方法有哪些
    MyBatis 提供了以下几种错误处理的方法:1. 异常映射:MyBatis 可以将底层数据库访问引发的异常映射为应用程序定义的异常...
    99+
    2023-09-13
    mybatis
  • java错误处理的方法有哪些
    Java错误处理的方法有以下几种:1. 异常捕获和处理:使用try-catch语句来捕获和处理异常。在try块中编写可能抛出异常的代...
    99+
    2023-08-26
    java
  • Rust处理错误的方法是什么
    这篇文章主要介绍“Rust处理错误的方法是什么”,在日常操作中,相信很多人在Rust处理错误的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rust处理错误的方法是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • python错误处理的方法有哪些
    在Python中,常用的错误处理方法有以下几种: try-except语句:用于捕获和处理异常。代码放在try代码块中执行,如果...
    99+
    2023-10-26
    python
  • JavaScript错误处理机制全面分析讲解
    目录1. Error 实例2. 原生错误类型2.1 ReferenceError2.2 SyntaxError2.3 TypeError2.4 RangeError2.5 URIEr...
    99+
    2022-11-13
    JavaScript错误处理机制 JS错误处理
  • SQL代理错误日志处理方法
    这篇文章主要讲解了“SQL代理错误日志处理方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL代理错误日志处理方法”吧!SQL Server代理是所有实时数据库的核心。代理有很多不明显的...
    99+
    2023-06-20
  • springboot全局异常处理的方法是什么
    在Spring Boot中,可以使用`@ControllerAdvice`和`@ExceptionHandler`注解来实现全局异常...
    99+
    2023-10-07
    springboot
  • CSS网页布局排查错误的方法
    本篇内容主要讲解“CSS网页布局排查错误的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS网页布局排查错误的方法”吧!CSS网页布局排查错误的方法虽然浏...
    99+
    2022-10-19
  • linux系统报tcp_mark_head_lost错误的处理方法
    问题说明 近期一台主机报以下 kernel 信息: Jul 8 10:47:42 cztest kernel: ------------[ cut here ]------------ Jul 8 10:47:42...
    99+
    2022-06-04
    linux tcp_mark_head_lost linux 系统错误检查
  • PHP中封装性的错误处理方法
    在PHP开发中,错误处理是一个至关重要的环节。封装性的错误处理方法可以提高代码的可维护性和可读性,同时也能提供更好的调试和报错能力。本文将介绍几种常见的错误处理方法,并给出具体的代码示例。使用try-catch块处理异常在PHP中,可以使用...
    99+
    2023-10-21
    PHP编程 错误处理 封装性
  • php7中异常与错误的处理方法
    这篇文章将为大家详细讲解有关php7中异常与错误的处理方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常与错误的概述什么叫做异常?异常是指程序运行中不符合预期情况以及与正常流程不同的状况。比如你链接数...
    99+
    2023-06-14
  • JavaScript中async await更优雅的错误处理方式
    目录背景 为什么要错误处理 async await 更优雅的错误处理 小结 总结背景 团队来了新的小伙伴,发现我们的团队代码规范中,要给 async  await 添加 ...
    99+
    2022-11-12
  • GoFrame错误处理常用方法及错误码使用示例
    目录前言错误创建New/NewfWrap/WrapfNewSkip/NewSkipf错误码使用错误码相关方法概览NewCode/NewCodef示例代码WrapCode/WrapCo...
    99+
    2022-11-13
  • JavaScript把局部变量变成全局变量的方法
    首先我们要知道函数的自调用 函数的自调用——自调用函数 一次性的函数——声明的同时,直接调用了 例如: (function () { console.log("函数"); ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作