Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

没有 Promise 也要捕获异常

  Promise 的一大特性就是自带异常捕获功能,如果我们总是对 Promise 做异常处理就不会漏掉任何一个异常。在没有 Promise 的环境下我们也应该对代码做异常处理,有时候确实是一些意料之外的运行时错误。这些错误如果能够正常捕获就不会给一般用户带来困扰。
  使用 Promise 时候经常会有这样的代码 new Promise((resolve, reject) => {
  // 一大堆复杂的逻辑,其中包含一些已知错误的处理
}).catch(error => {
  // 最终捕获意料之外的异常,并委婉地提示用户
});
  业务中总是存在一些意料之外的异常,在已知业务逻辑的异常处理中也可能再次出现异常。对这些异常做一个最终的统一处理是很重要的。处理方式可能是上报给 UBT 服务器,并给用户一些委婉的提示之类的。
  在没有 Promise 的环境下这类异常往往会被忽略掉,因为处理它们需要给代码包一个 try-catch 语句块。虽然我对自己的代码挺有自信,但还是会出现各种低级错误。比如前两天写一个根据用户输入的文本来生成正则表达式的代码就忘记包裹 try-catch 了,结果用户输入了无效的正则表达式,我的代码中执行 new RegExp 时就抛异常了。人类的思维总是无法完美,意料之外的异常交给 try-catch 才比较靠谱。否则要是遇到 JSON.parse from localStorage 之类的问题就可能出现更严重的后果。
  另外值得一提的是,try 语句只要用对了是不会影响性能的,见「try语句的正确使用方法」。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^