加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

一文汇报你怎样优雅处理赏罚前端非常?

发布时间:2019-03-16 02:17:23 所属栏目:移动互联 来源:佚名
导读:前端一向是间隔用户最近的一层,跟着产物的日益完美,我们会越发注重用户体验,而前端非常却如鲠在喉,甚是烦人。 一、为什么要处理赏罚非常? 非常是不行控的,会影响最终的泛起功效,可是我们有充实的来由去做这样的工作。 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. }); 

节制台就不会再有这样的错误了:

  1. Uncaught ReferenceError: Jartto is not defined 
  2. at setTimeout ((index):36) 

必要留意:
onerror 最好写在全部 JS 剧本的前面,不然有也许捕捉不到错误;
onerror 无法捕捉语法错误;

到这里根基就清楚了:在现实的行使进程中,onerror 首要是来捕捉预料之外的错误,而 try-catch则是用来在可预见环境下监控特定的错误,两者团结行使越发高效。

题目又来了,捕捉不到静态资源加载非常怎么办?

五、window.addEventListener

当一项资源(如图片或剧本)加载失败,加载资源的元素会触发一个 Event 接口的 error 变乱,并执行该元素上的onerror() 处理赏罚函数。这些 error 变乱不会向上冒泡到 window ,不外(至少在 Firefox 中)能被单一的window.addEventListener 捕捉。

  1. <scritp> 
  2. window.addEventListener('error', (error) => { 
  3. console.log('捕捉到非常:', error); 
  4. }, true) 
  5. </script> 
  6. <img src="./jartto.png"> 

节制台输出:

一文汇报你怎样优雅处理赏罚前端非常?

因为收集哀求非常不会变乱冒泡,因此必需在捕捉阶段将其捕获到才行,可是这种方法固然可以捕获到收集哀求的非常,可是无法判定 HTTP 的状态是 404 照旧其他好比 500 等等,以是还必要共同处事端日记才举办排查说明才可以。

必要留意:

  • 差异赏识器下返回的 error 工具也许差异,必要留意兼容处理赏罚。
  • 必要留意停止 addEventListener 一再监听。

六、Promise Catch

在 promise 中行使 catch 可以很是利便的捕捉到异步 error ,这个很简朴。

(编辑:湖南网)

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

热点阅读