加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.cn/)- 运营、云管理、经验、智能边缘、云硬盘!
当前位置: 首页 > 移动 > 正文

一文告诉你如何优雅处理前端异常?

发布时间:2019-03-17 06:06:15 所属栏目:移动 来源:佚名
导读:副标题#e# 前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。 一、为什么要处理异常? 异常是不可控的,会影响最终的呈现结果,但是我们有充分的理由去做这样的事情。 1.增强用户体验; 2.远程

2.再试试语法错误呢?

  1. window.onerror = function(message, source, lineno, colno, error) { 
  2. console.log('捕获到异常:',{message, source, lineno, colno, error}); 
  3. let name = 'Jartto 

控制台打印出了这样的异常:

  1. Uncaught SyntaxError: Invalid or unexpected token 

什么,竟然没有捕获到语法错误?

3.怀着忐忑的心,我们最后来试试异步运行时错误:

  1. window.onerror = function(message, source, lineno, colno, error) { 
  2. console.log('捕获到异常:',{message, source, lineno, colno, error}); 
  3. setTimeout(() => { 
  4. Jartto; 
  5. }); 

控制台输出了:

  1. 捕获到异常: {message: "Uncaught ReferenceError: Jartto is not defined", source: "http://127.0.0.1:8001/", lineno: 36, colno: 5, error: ReferenceError: Jartto is not defined 
  2. at setTimeout (http://127.0.0.1:8001/:36:5)} 

4.接着,我们试试网络请求异常的情况:

  1. <script> 
  2. window.onerror = function(message, source, lineno, colno, error) { 
  3. console.log('捕获到异常:',{message, source, lineno, colno, error}); 
  4. return true; 
  5. </script> 
  6. <img src="./jartto.png"> 

我们发现,不论是静态资源异常,,或者接口异常,错误都无法捕获到。

补充一点:window.onerror 函数只有在返回 true 的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示 Uncaught Error: xxxxx

  1. window.onerror = function(message, source, lineno, colno, error) { 
  2. console.log('捕获到异常:',{message, source, lineno, colno, error}); 
  3. return true; 
  4. setTimeout(() => { 
  5. Jartto; 
  6. }); 

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读