【问题标题】:how to know if TypeORM methods will throw or not?如何知道 TypeORM 方法是否会抛出?
【发布时间】:2022-01-01 19:20:04
【问题描述】:

我正在为学校开发我的第一个nestjs项目,它是一个与用户打交道的nestjs API。

在错误管理方面,我想了解如何确定像 findfindOneremove... 这样的 typeorm 方法是否有可能引发异常。

  • 例如,如果没有 userId,find(userId) 不会抛出,但这是一个承诺,所以我还应该链接 .catch() 吗?
  • 是否存在会抛出异常的情况(例如数据库服务器关闭?)

由于来自 C 语言,我倾向于接受训练来想象最坏的情况,而不是通常的行为,而且我在文档中找不到任何明确说明每种方法的 throw 的内容。

【问题讨论】:

    标签: exception nestjs typeorm


    【解决方案1】:

    例如 find(userId) 如果不存在 userId 将不会抛出,但这是一个承诺,所以我还应该链接 .catch() 吗?

    1. 无需锁链。您可以在 try-catch 块中添加整个 db 调用。即使你没有捕捉到异常也完全没问题,因为 NestJs 有一个内置的异常处理程序。

    有没有会抛出的情况(例如数据库服务器宕机?)

    1. 是的,这将引发异常,但如前所述,NestJs 包含一个内置的异常处理程序,它将捕获所有未处理的异常并为您返回适当的响应。因此,无需添加 catch 块。您可以在此处阅读更多相关信息 - Exception Filters

    【讨论】:

    • 谢谢。两个后续问题:在这种情况下,是什么让 try/catch 块与 .then().catch() 不同?此外,由于最初的问题更为笼统:我在哪里可以找到准确说明方法行为的参考?我可能太习惯于用 C 来精确描述库的功能如何成功、失败等……令我惊讶的是,TypeORM 似乎没有任何非常详细的参考。
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多