微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处理 try/catch 之外的错误?

如何解决如何处理 try/catch 之外的错误?

我在我的代码中的许多地方使用 try/catch 从控制台隐藏系统时出错。示例:

try {
  //code with error
}
catch(e){
  //do nothing
}

现在我正在向我的程序添加调试模式,我绝对希望将所有错误都记录到控制台,包括由上述构造处理的错误。最简单的方法添加一些 debugPrint func,其中 DEBUG env var 将在每个 catch 中检查,但我正在寻找最短的方法。我试图向窗口添加错误事件侦听器,但这不起作用。有没有类似的解决方案?

解决方法

我会包装代码以在传递给函数的回调中运行,并让该函数在 try/catch 中调用回调,并在需要时记录:

const runWithCatch = (cb) => {
  try {
    return cb();
  } catch(e) {
    if (debug) {
      console.error(e);
    }
  }
};
runWithCatch(() => {
  // some code that might throw
});

也就是说,这很奇怪,看起来可能是 X/Y 问题。运行时错误不应该出现在精心制定的同步代码中;如果确实出现错误,几乎肯定应该重构代码。

(如果您正在发出异步请求,则情况完全不同,因为预期偶尔会出现错误是合理的,而这些错误并非由代码逻辑问题引起)

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