当前位置: 首页 > 面试题库 >

Promise.reject消息是否应该包装在Error中?

裴心水
2023-03-14
问题内容

使用原生(ES6)Promise。我应该以错误拒绝:

Promise.reject(new Error('Something went wrong'));

还是我应该拒绝一个字符串:

Promise.reject('Something went wrong');

浏览器行为有什么区别?


问题答案:

是的,绝对可以。字符串不是错误,通常当您遇到错误时,这意味着出了点问题,这意味着您将真正享受良好的堆栈跟踪。没有错误-没有堆栈跟踪。

就像try / catch一样,如果您添加.catch到抛出拒绝中,则希望能够记录堆栈跟踪,而抛出字符串会为您带来麻烦。

我在移动设备上,因此答案很短,但我真的不能足够强调它的重要性。在大型(10K+LoC)应用程序中,拒绝中的堆栈痕迹确实使轻松的远程错误寻找与在办公室里漫长的夜晚之间产生了区别。



 类似资料:
  • 也许这是一个容易被删除的问题,但以防万一。 我最近在我的服务上执行注释方法时,怀疑这些方法是否应该包含在服务的接口上。 但是,另一方面,我的服务上有一个公共方法,但它不包括在接口上,出于某种原因,这对我来说很难闻(也许这只是一种习惯)。 那么,怎么办呢?这方面有什么惯例吗?

  • 问题内容: 我可以使用以下两种方式之一编写断言消息。说明成功: 或说明被破坏的条件: JUnit中是否专门为此提供标准?如果没有,双方的论点是什么? PS:我在网上看到的文章都在没有说明的情况下进行了演示,因此仅说“搜索Google”是无法解决的! [更新] 每个人都对我用过的事实感到困惑,因此该消息可能毫无用处。但这当然只是因为我想简单地说明这个问题。 因此,想象一下它是: 消息有用的地方。 问

  • 在Kafka-manager github页面中写道: 最低配置是用于kafka管理器状态的zoo门主机。这可以在conf目录的application.conf文件中找到。相同的文件将打包在分发zip文件中;您可以在所需服务器上解压缩文件后修改设置。 Kafka-manager . ZK hosts = " my . zookeeper . host . com:2181 "您可以通过逗号分隔来指

  • 我正在努力实现未来 根据官方文件,我们可以推断: > 方法取消()不会抛出像InterruptedException或ExecutionException这样的异常。此外,它没有超时的变体。所以看起来,它不应该被阻塞。 文件说 此方法返回后,对isDone()的后续调用将始终返回true。 但是 boolean isDone()如果此任务完成,则返回true。 因此,如果我们在任务处理时运行取消(

  • 我正在使用maven构建restful应用程序,用于从mysql中选择数据。我对POM配置感到非常困惑,如下所示: 而我的多个软件包如下所示: 问题是我是否需要为每个包添加另一个groupid和artifactid。当我访问路径http://localhost:8080/helloworld/rest/exportfile/json它在com.tutorialacademy.rest包类下被编码为

  • 问题内容: 我一直在使用Java的ConcurrentMap作为可从多个线程使用的地图。putIfAbsent是一种很棒的方法,比使用标准映射操作更容易读/写。我有一些看起来像这样的代码: 在可读性方面,这很棒,但是每次都确实需要创建一个新的HashSet,即使它已经在地图中也是如此。我可以这样写: 进行此更改后,它会失去一些可读性,但无需每次都创建HashSet。在这种情况下哪个更好?我倾向于第