如何在 Deno 中对 Promise 使用 try...catch 捕获错误?

前言

随着 Deno 的不断发展,越来越多的前端开发者选择学习和使用这个新的运行时环境。在 Deno 中,Promise 是一种非常重要的异步编程模型,但是我们经常会遇到 Promise reject 的情况,而且这些错误信息对于我们调试代码和确保代码质量都非常重要。这篇文章介绍了如何使用 try...catch 捕获 Promise 的错误信息,并通过示例代码演示了如何处理 Promise 中的错误。

Promise 错误捕获的问题

在传统的 JavaScript 中,我们通常会使用 catch 语句来捕获 Promise 中的错误,例如:

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

这段代码中当请求完成时,如果响应状态不是 200,将会 reject Promise,并打印错误信息。但是在 Deno 中,try...catch 语句可以用于捕获 Promise 中的错误:

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

这段代码中我们使用了 await 代替了 then,同时使用了 try...catch 来捕获错误。尽管这段代码可以正常工作,但是很多开发者很容易忽略这部分错误处理的代码。我们需要理解,在 async/await 中,如果一个 Promise 被 reject 了,那么这个错误将会被作为一个异常抛出。因此我们需要使用 try...catch 来捕获这个异常,否则程序将会崩溃。

一个示例

为了更好的理解如何使用 try...catch 捕获 Promise 的错误,我们来看一个例子。假设我们有一个异步请求的函数 getPosts,该函数使用 fetch 来获取一个 JSON 数据。代码如下:

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

现在我们会将这个函数封装在一个 try...catch 语句中,以防止一个 HTTP 错误的出现:

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

在这个示例中,如果 HTTP 请求返回了一个非 200 响应,那么程序将会在控制台打印错误信息,并且不会停止运行。

结论

在 Deno 中,Promise 是异步编程的重要模型,我们需要正确地处理 Promise 中的错误信息。使用 try...catch 可以很容易地捕获 Promise 中的错误,并且可以在错误发生时正常地处理程序,而不会导致程序崩溃。在编写代码时,我们应该始终牢记这个异常处理,以确保我们的代码质量。

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