如何在 GraphQL 中处理异常和错误

GraphQL 是一种新兴的 API 查询语言和运行时,它允许客户端指定所需的数据形式,从而解决了原来使用 RESTful API 中数据不准确的问题。 一般来说,GraphQL 有着很好的错误处理和异常处理机制,但有时处理异常和错误可能会有些棘手。本文将介绍如何在 GraphQL 中处理异常和错误,分享一些有关它们的详细信息、深入思考、学习以及指导实现的示例代码。

了解 GraphQL 的异常处理

GraphQL 请求可能会引发许多异常。在 GraphQL 中,大多数异常都是因为在查询执行期间出现了问题。它们可以简单地解释为 “无法完成查询请求”的原因。 这些不如预期的查询可能会有很多原因,包括用户验证失败、数据库连接失败以及查询的深度或宽度超出制定限制。

GraphQL 的异常处理分为两个步骤:异常分析和异常处理。

异常分析是针对 GraphQL 的特定解析器和执行器工具进行指定的,目的是发现哪些查询语句导致了异常,以及所需的反应是什么。

异常处理是指以简洁和明确的方式处理错误,从而将错误信息传递给客户端,而不是提供不太明确或无法理解的信息。

处理 GraphQL 中的异常

在 GraphQL 中处理异常有许多方法。以下是其中一些方法:

使用静态类型语言

使用 GraphQL 在静态类型语言上编写代码,如 TypeScript 或 Flow 等,可以使您检测到更多的运行时异常,并在编译代码时就运行测试。静态类型绑定可以帮助您在运行时捕获类型错误并进行修复。这有助于避免许多GraphQL调试错误。

捕获异常

在GraphQL中,您可以捕获异常并添加有关这些异常的详细信息。您可以使用try-catch块来捕获GraphQL查询的异常。如以下代码:

--- -
    ----- ------ - ----- -----------------------
- ----- ----- -
    -- --- ----- --- ---------
    -------------------- --------- ------- ---------
    ---------------------- -------- --------- ------ ------ ---
-

自定义错误处理

您可以自定义GraphQL 中出现的错误。 例如,您可以在 GraphQL 客户端中的执行函数中定义自定义错误处理:

------ ------- ---- ----------

----- ------------------- - --- -- -
    ----- ------- - ---------- -- ------------- -- ------- -- ------- --- --------- -----------
    ---------------------
-

----- ------- - ----- ------- ------- ------------- -- -
    ----- ------ - ----- ----------------------- ------ --------------
    -- --------------- -
        ----------------------------- -- ----------------------------
    -
    ------ -------
--

在上面的例子中,graphqlErrorHandler 将异常信息输出到控制台。

错误格式化

格式化错误信息是 GraphQL 中另一个非常有用的技术。您可以使用错误格式化来将异常转换为有用和易于理解的格式。

举个例子,有一个 “Product” 对象,其中包含一些重要信息和一组错误。在添加新产品时,出现错误。您不想向所有客户端公开这些错误信息,因为它们可能仅与数据库相关,但可以将错误转换为类似于以下内容的有用格式:

-
    --------- -
        -
            ------------ -
                -
                    ------- --
                    --------- --
                -
            --
            ---------- ----- ------------
            ------- -
                -------------
                ----------
                ---------
                ----
                ---------
            --
            ------------- -
                ------------ -
                    ------------- -
                        -----
                    -
                -
            -
        -
    --
    ------- ----
-

在这个例子中,message 属性提供了一个有用的错误消息,path 属性表示错误所在的 GraphQL 查询路径。

结论

在 GraphQL 中,异常和错误处理是应用程序的一个非常重要的方面。在本文中,我们学习了如何在 GraphQL 中处理异常和错误,并分享了一些详细和深入的内容,包括在使用GraphQL时,捕获异常,自定义错误处理以及使用错误格式化,这些处理方式都可以使您的应用程序避免或减少错误。这篇文章对于想要学习 GraphQL 的初学者以及已经掌握 GraphQL 的开发人员来说都非常有帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670f13b25f5512810262d848