‫Instruktur: Dalam video ini, mari kita bicara tentang
‫sesuatu yang kita miliki di node.js. js memanggil penolakan yang tidak
‫tertangani dan kemudian mempelajari bagaimana kita dapat menanganinya.
‫Jadi pada titik ini, kami telah berhasil
‫menangani kesalahan dalam
‫aplikasi ekspres kami dengan meneruskan kesalahan asinkron operasional
‫ke middleware penanganan kesalahan global.
‫Ini, kemudian mengirim pesan kesalahan yang relevan
‫kembali ke klien tergantung pada jenis kesalahan yang terjadi, bukan?
‫Namun, mungkin juga terjadi kesalahan di luar ekspres dan contoh
‫yang baik untuk itu dalam aplikasi kita saat ini
‫adalah koneksi database mongodb.
‫Jadi bayangkan database sedang down karena suatu alasan atau
‫karena alasan tertentu, kita tidak bisa login.
‫Dan dalam hal ini, ada kesalahan
‫yang harus kita tangani juga.
‫Tapi itu tidak terjadi di dalam aplikasi ekspres kita
‫dan, tentu saja, pengendali kesalahan yang kita terapkan
‫tidak akan menangkap kesalahan ini, bukan?
‫Jadi hanya untuk menguji apa yang terjadi, mari
‫kita lanjutkan dan ubah kata sandi mongodb kita, oke?
‫Karena dengan begitu, kita
‫tidak akan bisa terhubung ke database, kan?
‫Jadi kita kemudian harus mendapatkan semacam kesalahan, dan jadi
‫mari kita pergi ke sini ke file
‫server kita dan menyimpannya untuk memuat ulang server kita, mari
‫kita tingkatkan di sini, dan memang,
‫di sini kita memiliki penolakan janji yang tidak tertangani.
‫Dan itulah sebenarnya topik video ini.
‫Jadi, penolakan janji yang tidak tertangani berarti bahwa di suatu
‫tempat dalam kode kita, ada janji yang ditolak.
‫Tapi penolakan itu belum ditangani di mana pun, oke?
‫Dan di bawah sini, Anda juga melihat peringatan penghentian yang
‫mengatakan bahwa di masa depan penolakan yang
‫tidak tertangani hanya akan keluar dari program simpul yang sedang
‫berjalan, yang mungkin tidak selalu sesuai keinginan Anda, oke?
‫Jadi mari kita perbaiki masalah ini
‫dan singkirkan penolakan janji yang tidak tertangani ini.
‫Nah, dalam contoh sederhana ini,
‫sebenarnya cukup
‫mudah untuk menangani penolakan itu, bukan?
‫Yang harus kita lakukan adalah datang ke
‫sini ke bagian kode ini di mana koneksi kita benar-benar selesai
‫dan kemudian, tambahkan catch handler di sana, bukan?
‫Jadi sedikit seperti ini, dan kemudian di sini,
‫kita bisa menangani penolakan itu
‫dan tidak akan lagi mendapatkan kesalahan ini.
‫Biarkan saya dengan cepat menunjukkan itu kepada Anda.
‫Jadi coba lagi.
‫Dan sekarang, Anda mendapatkan kesalahan yang tentu saja, hasil dari
‫log ini di sini, tetapi
‫tentu saja, kami tidak mendapatkan penolakan janji yang
‫tidak tertangani, sekali lagi, karena kami benar-benar menanganinya di sini, oke?
‫Jadi ini akan berhasil, tentu saja, tetapi saya benar-benar ingin menunjukkan
‫kepada Anda bagaimana secara global menangani janji yang ditolak
‫yang tidak ditangani, karena dalam aplikasi yang lebih besar,
‫bisa menjadi sedikit lebih sulit untuk selalu melacak semua janji
‫yang mungkin ditolak di beberapa titik, oke?
‫Jadi pada titik tertentu, Anda mungkin memiliki
‫penolakan janji yang tidak tertangani di suatu tempat dan jadi izinkan
‫saya menunjukkan kepada Anda bagaimana menghadapinya secara global pada dasarnya.
‫Jadi sekarang mari kita belajar bagaimana menangani penolakan yang tidak tertangani dan
‫kita akan melakukannya di sini.
‫Dan jadi ingat bagaimana di salah satu bagian
‫pertama kursus, kita berbicara tentang acara
‫dan pendengar acara, bukan?
‫Dan sekarang, saatnya untuk benar-benar menggunakan pengetahuan itu.
‫Jadi setiap kali ada penolakan yang tidak
‫tertangani di suatu tempat di aplikasi kita, objek
‫proses akan memancarkan objek yang disebut penolakan yang tidak
‫tertangani dan jadi kita bisa berlangganan acara itu seperti ini.
‫Jadi proses. pada, ingat, dan kemudian
‫nama acara, penolakan tidak tertangani, dan kemudian
‫fungsi panggilan balik
‫di sini menerima kesalahan, jadi mari kita
‫lanjutkan dan mencatat kesalahan ke konsol.
‫Jadi mari kita gunakan err. nama dan kesalahan. pesan.
‫Jadi ini adalah beberapa default yang kami
‫miliki pada semua kesalahan di node.js. js, oke?
‫Oke, dan setelah menyimpan, kita sudah, di
‫sini mendapatkan nama kesalahan dan juga pesan kesalahan.
‫Otentikasi sangat buruk karena, tentu saja, kami memiliki kata
‫sandi yang salah.
‫Jadi sekarang, penolakan janji yang tidak tertangani
‫sekarang benar-benar ditangani.
‫Dan tentu saja, bukan hanya satu dari koneksi yang gagal
‫ini tetapi penolakan janji lainnya yang mungkin tidak
‫kita tangkap di suatu tempat di aplikasi ditangani di sini di
‫final ini, sebut saja jaring pengaman, oke?
‫Jadi kita selalu harus berasumsi bahwa kita sebagai
‫programmer akan membuat kesalahan.
‫Jadi selalu yang terbaik untuk memiliki tempat sentral seperti
‫ini untuk menangani semua
‫penolakan janji seperti jaring pengaman terakhir, oke?
‫Sekarang, jika kita benar-benar memiliki beberapa masalah
‫dengan koneksi database, seperti yang kita miliki dalam contoh
‫ini, maka aplikasi kita tidak akan bekerja sama sekali.
‫Jadi yang bisa kita
‫lakukan di sini adalah mematikan aplikasi kita, oke?
‫Jadi untuk mematikan aplikasi, kami menggunakan proses. keluar.
‫Dan kami sebenarnya sudah menggunakannya
‫sebelumnya dalam skrip di mana kami
‫mengimpor semua data ke dalam database dari file JSON, ingat?
‫Jadi proses. keluar dan kemudian
‫di sini, kita benar-benar dapat memberikan kode.
‫Dan kode nol berarti sukses
‫dan satu berarti pengecualian yang tidak tertangkap.
‫Dan itulah yang biasanya digunakan di sini, oke?
‫Jadi biasanya, Anda akan selalu melihatnya seperti ini.
‫Dan mari kita tambahkan seperti log di sini, konsol. log unhandler penolakan,
‫sesuatu seperti
‫ini.
‫Jadi Anda lihat, saya sangat suka ini, yang ini di sini.
‫Biarkan saja ini simpul...
‫Tidak benar-benar pengguna tetapi
‫log kami yang kami matikan, oke?
‫Dan sekarang, Anda melihat bahwa aplikasi tersebut benar-benar mogok.
‫Dan itu karena proses ini. keluar dari sini, oke?
‫Sekarang, hanya ada satu masalah
‫dengan cara kami
‫mengimplementasikannya sekarang, yaitu, cara kami menerapkannya di
‫sini jadi proses saja. exit adalah cara
‫yang sangat mendadak untuk mengakhiri program karena ini
‫akan segera membatalkan semua permintaan yang saat ini masih
‫berjalan atau tertunda dan itu mungkin bukan ide yang baik, oke?
‫Dan biasanya, apa yang kita lakukan adalah mematikan dengan
‫anggun di mana kita pertama kali menutup
‫server dan baru kemudian, kita mematikan aplikasi, oke?
‫Jadi ayo...
‫Sebelum kita melakukan itu, kita perlu menyimpan
‫server di sini pada dasarnya ke sebuah variabel, oke?
‫Dan hasil dari memanggil app. mendengarkan adalah server dan sekarang,
‫di server itu, kita dapat mengatakan server. close yang akan, seperti namanya,
‫menutup server dan kemudian setelah itu
‫selesai, itu akan menjalankan
‫fungsi panggilan balik yang kami berikan ke dalamnya dan hanya
‫di sini,
‫di mana kami kemudian mematikan server, oke?
‫Dan dengan melakukan ini, dengan melakukan server. close, kita
‫beri server, pada dasarnya waktu untuk menyelesaikan semua request
‫yang masih pending atau sedang ditangani pada saat
‫itu, dan baru setelah itu, server
‫pada dasarnya dimatikan, oke?
‫Jadi ketika kita memberikan
‫brankas, itu tidak akan terlihat persis
‫sama karena, (tertawa) ya, kita seperti satu-satunya yang
‫benar-benar mengakses aplikasi ini tetapi dalam skenario dunia
‫nyata, kita harus selalu melakukannya seperti ini, oke ?
‫Dan tentu saja, itu tidak
‫ideal bahwa aplikasi itu macet, bukan?
‫Karena saat ini tentu saja aplikasi tidak
‫berjalan, tidak berfungsi sama sekali bukan?
‫Dan biasanya, dalam aplikasi produksi di server web, kami biasanya
‫memiliki beberapa alat yang memulai
‫ulang aplikasi tepat setelah macet, atau juga beberapa platform
‫yang menghosting node. js secara
‫otomatis akan melakukannya sendiri, oke?
‫Karena tentunya kita tidak ingin membiarkan aplikasi
‫menggantung seperti ini selamanya.
‫Jadi itu juga tidak berguna, oke?
‫Jadi pada dasarnya, beginilah cara Anda
‫menangani janji yang ditolak dan tidak ditangani.
‫Jadi sekali lagi, pada dasarnya, kami mendengarkan
‫acara penolakan yang tidak tertangani ini, yang kemudian
‫memungkinkan kami untuk menangani
‫semua kesalahan yang terjadi dalam
‫kode asinkron yang sebelumnya tidak ditangani.
‫Tapi sekarang, Anda mungkin bertanya, bagaimana dengan kode sinkron?
‫Di mana kita akan menangani itu?
‫Dan jawabannya terletak, seperti yang bisa Anda bayangkan,
‫di video berikutnya.