Dalam ciri Async/Await JavaScript, adalah perkara biasa untuk mengisytiharkan pembolehubah yang menunggu ungkapan di luar percubaan ...tangkap blok untuk memastikan kebolehaksesan mereka kemudian. Walau bagaimanapun, adalah amalan terbaik untuk meminimumkan logik perniagaan dalam badan percubaan untuk mengendalikan pengecualian dengan berkesan.
try { const createdUser = await this.User.create(userInfo); console.log(createdUser); // Business logic goes here } catch (error) { console.error(error); // from creation or business logic }
Pendekatan ini memastikan semua pengecualian, termasuk daripada logik perniagaan, ditangkap.
Jika anda mahu tangkap ralat hanya dari janji, pertimbangkan pilihan berikut:
Isytiharkan pembolehubah di luar blok dan kendalikan ralat melalui percabangan:
let createdUser; try { createdUser = await this.User.create(userInfo); } catch (error) { console.error(error); // from creation } if (createdUser) { // User was created successfully console.log(createdUser); // Business logic goes here }
Semak jenis pengecualian yang ditangkap dan kendalikan sewajarnya:
try { const createdUser = await this.User.create(userInfo); // User was successfully created console.log(createdUser); // Business logic goes here } catch (error) { if (error instanceof CreationError) { console.error(error); // from creation } else { throw error; } }
Alternatif untuk mencuba...penangkapan yang menawarkan kesederhanaan dan ketepatan menggunakan .then() panggil balik:
await this.User.create(userInfo).then( (createdUser) => { // User was created successfully console.log(createdUser); // Business logic goes here }, (error) => { console.error(error); // from creation } );
Pertimbangkan kelebihan dan kekurangan setiap pilihan berdasarkan keperluan khusus anda.
Atas ialah kandungan terperinci Bagaimana Menggunakan Try...Catch dengan Async/Await dalam JavaScript dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!