在 Deno 中,我们可以通过内置的 fetch
函数来进行 HTTP 请求。但是,由于网络传输的不确定性,我们也需要处理 HTTP 请求中可能遇到的错误。
下面,我们将一步步地介绍在 Deno 中如何处理 HTTP 请求的错误,并给出示例代码。
错误处理方式
在 Deno 中,我们可以使用 try…catch
块来捕获 fetch
函数抛出的错误。如果出现错误,我们可以通过 Error
对象的 message
属性来获取错误信息。
例如,假设我们使用 fetch
函数来请求一个不存在的网站,我们可以将其放在 try…catch
块中来处理错误。
try { const response = await fetch("http://nonexistent-website.com"); console.log(response.status); } catch (error) { console.log(error.message); }
在上面的代码中,我们使用 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