Deno 中如何处理 HTTP 请求的错误?

阅读时长 4 分钟读完

在 Deno 中,我们可以通过内置的 fetch 函数来进行 HTTP 请求。但是,由于网络传输的不确定性,我们也需要处理 HTTP 请求中可能遇到的错误。

下面,我们将一步步地介绍在 Deno 中如何处理 HTTP 请求的错误,并给出示例代码。

错误处理方式

在 Deno 中,我们可以使用 try…catch 块来捕获 fetch 函数抛出的错误。如果出现错误,我们可以通过 Error 对象的 message 属性来获取错误信息。

例如,假设我们使用 fetch 函数来请求一个不存在的网站,我们可以将其放在 try…catch 块中来处理错误。

在上面的代码中,我们使用 await 关键字等待 fetch 函数返回结果,如果出现错误,则通过 catch 块捕获该错误,并输出错误信息。

HTTP 状态码判断

在实际开发中,我们可能需要根据 HTTP 响应的状态码来判断请求是否成功。在 Deno 中,我们可以通过 response.status 属性来获取 HTTP 状态码。

例如,我们可以将状态码为 404 的响应视为错误,并做出相应的处理。

-- -------------------- ---- -------
--- -
  ----- -------- - ----- ----------------------------------------
  -- ---------------- --- ---- -
    ----- --- ---------- ---- --- ---------
  - ---- -
    -----------------------------
  -
- ----- ------- -
  ---------------------------
-
展开代码

在上面的代码中,如果请求返回的状态码为 404,则会抛出一个错误,否则输出响应的状态码。

响应格式判断

在某些情况下,请求成功返回了响应,但其格式不符合我们的预期,这时我们也可以将其视为错误进行处理。例如,我们可以将返回格式不是 JSON 的响应视为错误,并抛出一个异常。

-- -------------------- ---- -------
--- -
  ----- -------- - ----- -----------------------------------------
  ----- ---- - ----- ----------------
  -- ------- -
    ----- --- -------------- ---- ----------
  - ---- -
    -- -- --------- ---- ----
  -
- ----- ------- -
  ---------------------------
-
展开代码

在上面的代码中,我们通过 response.json() 方法将响应转换为 JSON 格式,然后判断 JSON 是否有效。如果无效,则抛出一个异常。

总结

在 Deno 中处理 HTTP 请求的错误主要有以下几种方式:

  • 使用 try…catch 块捕获 fetch 函数抛出的错误。

  • 根据 HTTP 响应的状态码来判断请求是否成功。

  • 根据响应的格式来判断是否成功返回了预期的数据。

在实际应用中,我们可以根据具体的需求选择其中的一种或多种方式来处理 HTTP 请求的错误。

示例代码:

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

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

--- -
  ----- -------- - ----- -----------------------------------------
  ----- ---- - ----- ----------------
  -- ------- -
    ----- --- -------------- ---- ----------
  - ---- -
    -- -- --------- ---- ----
  -
- ----- ------- -
  ---------------------------
-
展开代码

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ca5f0b5ad90b6d041ab96c

纠错
反馈

纠错反馈