Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menimbulkan ralat dalam fungsi penjana async dalam JavaScript?

Bagaimana untuk menimbulkan ralat dalam fungsi penjana async dalam JavaScript?

WBOY
WBOYke hadapan
2023-08-29 08:49:021104semak imbas

如何在 JavaScript 中的异步生成器函数中引发错误?

Kod sering menimbulkan ralat, dan ralat pengendalian adalah lebih penting. JavaScript juga membenarkan pengguna membuang ralat tersuai menggunakan kata kunci "buang". Kita boleh menangkap ralat dalam blok tangkapan.

Kita boleh menggunakan sintaks cuba-tangkap untuk menangkap ralat yang dilemparkan oleh fungsi biasa. Marilah kita memahaminya melalui contoh berikut.

Contoh 1 (kesilapan balingan dalam fungsi biasa)

Dalam contoh di bawah, kami telah mencipta fungsi biasa throwError() yang membuang ralat dengan mesej ralat tersuai menggunakan kata kunci lontaran. Kami telah melaksanakan fungsi di dalam blok cuba. Jika fungsi melemparkan sebarang ralat, kawalan pergi ke blok tangkapan dan ini adalah cara kami mengesan ralat.

<html>
<body>
   <h3> Using the throw keyword to throw an error from the normal function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      function throwError() {
         throw new Error('Error from normal function');
      }
      try {
         throwError();
      } catch (e) {
         content.innerHTML = e;
      }
   </script>
</body>
</html>

Jika kita membuat fungsi throwError() async, ia akan menjana satu lagi ralat kerana kita boleh menggunakan blok try-catch untuk mengendalikan ralat yang dilemparkan oleh fungsi segerak.

Untuk menyelesaikan isu ini, pengguna mesti menggunakan sintaks blok tangkapan kemudian untuk menyelesaikan janji.

Tatabahasa

Pengguna boleh mengikuti sintaks berikut untuk menyelesaikan ralat yang dilemparkan oleh fungsi tak segerak.

throwError().then((res) => {
   // print content
}).catch((err) => {
   // print error message
})

Dalam sintaks di atas, throwError() ialah fungsi yang mengembalikan Promise, dan kami menggunakan kemudian dan menangkap blok untuk menyelesaikan masalah ini.

Contoh 2 (Fungsi Async membuang ralat)

Dalam contoh di bawah, fungsi throwError() ialah fungsi tak segerak kerana kami menambah kata kunci "async" sebelum kata kunci fungsi. Kami membuang ralat daripada fungsi async seperti yang kami lakukan daripada fungsi biasa.

Selepas itu, kami mengendalikan Janji menggunakan masa itu dan menangkap blok. Dalam output, pengguna boleh melihat bahawa apabila fungsi async melemparkan ralat, kawalan pergi ke blok tangkapan.

<html>
<body>
   <h3> Using the <i> throw </i> keyword to throw an error from the async function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      async function throwError() {
         throw new Error('Error from Async function');
      }
      throwError().then((res) => {
         content.innerHTML = res;
      }).catch((err) => {
         content.innerHTML = err;
      })
   </script>
</body>
</html>

Contoh 3 (membuang ralat dengan menolak Janji dalam fungsi async)

Kami boleh membalas janji daripada fungsi async. Menolak janji dalam fungsi async adalah seperti membuang ralat. Kami menggunakan kaedah reject() dalam fungsi panggil balik untuk menolak janji.

Blok 'then-catch' digunakan untuk menyelesaikan janji yang dikembalikan oleh fungsi, dan pengguna boleh melihat kawalan pergi ke blok tangkapan.

<html>
<body>
   <h3> Using the <i> reject </i> method to throw an error from the async function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      async function throwError() {
         return new Promise((resolve, reject) => {
            reject("This promise is rejected from the async function." );
         });
      }
      throwError().then((res) => {
         content.innerHTML = res;
      }).catch((err) => {
         content.innerHTML = err;
      })
   </script>
</body>
</html>

Pengguna belajar cara membuang ralat daripada fungsi async. Pengguna boleh menggunakan kata kunci "buang" untuk membuang ralat sama seperti fungsi biasa. Pengguna perlu menggunakan blok "then-catch" untuk mengendalikan ralat kerana fungsi async mengembalikan Promise dan bukannya menggunakan blok try-catch.

Atas ialah kandungan terperinci Bagaimana untuk menimbulkan ralat dalam fungsi penjana async dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam