‫Man: Dalam video ini, kita sekarang akan
‫menerapkan middleware penanganan kesalahan global yang baru saja
‫kita bicarakan sebelumnya.
‫Jadi ingatlah bahwa tujuannya
‫adalah untuk menulis fungsi middleware,
‫yang akan mampu menangani kesalahan operasional seperti ini.
‫Oke, jadi ketika pengguna menekan URL yang tidak ada, sementara kami dapat
‫menganggap itu sebagai kesalahan operasional, dan dalam hal
‫ini kami menanganinya dengan mengirimkan kembali respons
‫ini di sini, bukan?
‫Tetapi sekali lagi, tujuannya adalah untuk melakukannya di satu tempat sentral.
‫Misalnya, kami memiliki hal serupa di sini.
‫Jadi di semua tempat di sini kami memiliki cuplikan
‫ini di sini, yang menangani kesalahan.
‫Jadi kita harus menyerang blok etch di sini, dan
‫jika ada kesalahan, maka kita
‫menanganinya dengan mengirimkan kesalahan itu ke klien.
‫Dan sekali lagi, pada akhirnya, kami
‫ingin menyingkirkan semua ini dan menangani kesalahan
‫dalam satu middleware pusat.
‫Jadi sekarang mari kita mulai dengan
‫benar-benar membangun fungsi middleware itu.
‫Dan di Express, sebenarnya sangat mudah.
‫Ingat bagaimana saya memberi tahu Anda bahwa
‫Express sudah dilengkapi dengan penangan middleware
‫di luar kotak.
‫Jadi seperti biasa, kita mulai dengan menggunakan aplikasi. gunakan, oke, dan kemudian
‫di sini kita mendefinisikan fungsi middleware kita.
‫Jadi, untuk mendefinisikan middleware penanganan
‫kesalahan, yang perlu kita lakukan adalah memberikan
‫fungsi middleware empat argumen dan Express akan secara
‫otomatis mengenalinya sebagai middleware penanganan kesalahan.
‫Dan karena itu, panggil saja ketika ada kesalahan.
‫Dan seperti dalam banyak kasus lainnya, fungsi
‫middleware ini adalah fungsi error first, yang
‫berarti argumen pertama
‫adalah
‫error, dan kemudian kita memiliki request, response, dan next.
‫Jadi dengan menetapkan empat parameter, Express secara otomatis
‫mengetahui bahwa seluruh fungsi di sini
‫adalah middleware penanganan kesalahan.
‫Jadi sekarang mari kita terapkan kode untuk fungsi ini di sini dan setelah
‫itu saya akan menunjukkan kepada Anda bagaimana
‫sebenarnya kita bisa membuat kesalahan sehingga fungsi middleware ini
‫benar-benar tertangkap.
‫Jadi dua langkah, pertama kita buat middleware, kemudian di
‫langkah kedua kita
‫justru akan membuat error sehingga fungsi ini akan ketahuan.
‫Dan untuk saat ini, mari kita membuatnya tetap sederhana di sini.
‫Jadi semua yang benar-benar ingin kami lakukan
‫untuk menangani kesalahan ini adalah mengirim kembali tanggapan ke klien.
‫Jadi res. status, tapi sekarang
‫kita tidak begitu tahu kode statusnya yang mana, kan?
‫Jadi misalnya, dalam hal ini adalah 404, tetapi kami memiliki
‫beberapa kesalahan di sini, yang memiliki kode status lain.
‫Seperti kami memiliki 400 misalnya untuk permintaan buruk, atau
‫benar-benar semua jenis kode lainnya.
‫Jadi kita sebenarnya ingin membaca
‫kode status itu dari objek kesalahan, oke?
‫Jadi ketika kita membuat kesalahan itu sedikit
‫kemudian di langkah kedua,
‫seperti yang saya katakan, kami akan mendefinisikan kode status ini pada kesalahan.
‫Jadi katakanlah kode status, dan sekarang saya ingin mendefinisikan default
‫di sini.
‫Karena akan ada error yang bukan berasal
‫dari kita karena akan ada error
‫tanpa kode status, jadi error itu
‫bukan buatan kita, tapi misalnya beberapa tempat lain
‫di aplikasi note.
‫Dan saya tahu itu terdengar agak membingungkan untuk saat ini,
‫tetapi Anda akan melihat di seluruh bagian ini.
‫Untuk saat ini, mari kita definisikan kode status
‫default ini.
‫Jadi kita mengatakan bahwa kesalahan. kode status
‫sama dengan err. statuscode pada dasarnya
‫jika didefinisikan atau kode 500, yang berarti lagi, kesalahan server
‫internal, dan itu biasanya standar yang
‫kami gunakan.
‫Dan dengan cara yang sama, kita juga mendefinisikan status,
‫jadi katakanlah error. status sama dengan kesalahan. status jika didefinisikan,
‫dan jika tidak, itu
‫kesalahan.
‫Jadi errornya, ingat, adalah ketika kita memiliki kode status 500 dan
‫jika kode statusnya 400, maka itu gagal.
‫Jadi misalnya di sini di 404 ini, statusnya gagal.
‫Dan sekarang di sini
‫kita dapat menggunakannya, jadi kesalahan. statuscode, dan kemudian mengirim beberapa json, sangat mirip
‫dengan apa yang kami lakukan sebelumnya.
‫Jadi kita mulai dengan status dan membacanya dari kesalahan. status dan pesan
‫akan datang dari kesalahan juga.
‫Jadi salah. pesan dan saya akan menunjukkan kepada Anda
‫dalam sedetik bagaimana kesalahan itu. properti pesan di sini dibuat.
‫Baiklah, tapi untuk saat ini, ini adalah middleware penanganan kesalahan
‫kami yang sangat sederhana.
‫Sangat sederhana, tetapi untuk saat ini berhasil.
‫Dan sekarang langkah kedua, di mana
‫kita sebenarnya membuat kesalahan.
‫Jadi mari kita lakukan itu di sini.
‫Jadi di sini, di fungsi itu, yang menangani semua
‫rute yang tidak ditangani, jadi izinkan saya mengomentari
‫yang ini di sini dan sebagai gantinya kami ingin membuat kesalahan.
‫Jadi katakanlah const err dan
‫ini adalah kesalahan baru.
‫Jadi pada dasarnya kami menggunakan konstruktor kesalahan bawaan
‫untuk membuat kesalahan.
‫Dan sekarang kita bisa memasukkan string dan string
‫itu akan menjadi properti pesan kesalahan.
‫Jadi apa yang baru saja kita bicarakan di sini.
‫Jadi pesan itu seharusnya pesan ini.
‫Baiklah?
‫Dan kemudian seharusnya dikatakan err. status yang
‫gagal,
‫dan kemudian err. statusCode sama dengan 404.
‫Jadi itulah yang saya sebutkan sebelumnya bahwa kita dapat
‫menentukan kode status dan status pada objek kesalahan.
‫Dan itulah tepatnya yang kami lakukan di sini.
‫Kami membuat kesalahan dan kami
‫kemudian menentukan status dan properti kode status di dalamnya
‫sehingga middleware penanganan kesalahan
‫kami kemudian dapat menggunakannya di langkah berikutnya.
‫Tapi sekarang, bagaimana kita benar-benar membaca langkah selanjutnya?
‫Jadi middleware berikutnya.
‫Yah, seperti biasa, kami menggunakan next.
‫Tapi kali ini kita menggunakan next dengan cara khusus.
‫Karena sekarang kita harus benar-benar meneruskan kesalahan
‫itu ke yang berikutnya, jadi jika fungsi berikutnya menerima
‫argumen, apa pun itu, Express akan
‫secara otomatis mengetahui bahwa ada kesalahan sehingga akan menganggap
‫bahwa apa pun yang kita masukkan berikutnya akan
‫menjadi kesalahan.
‫Dan itu berlaku untuk setiap fungsi berikutnya di setiap middleware
‫di mana saja di aplikasi kita.
‫Jadi sekali lagi, setiap kali kita meneruskan sesuatu ke
‫berikutnya, itu akan menganggap bahwa itu adalah kesalahan,
‫dan kemudian akan melewati semua middleware lain
‫di tumpukan middleware dan mengirim kesalahan yang kita berikan
‫ke middleware penanganan kesalahan global kita, yang kemudian
‫akan , tentu saja, dieksekusi.
‫Jadi sekarang mari kita lewati
‫kesalahan yang akan dilewati lagi, semua
‫middlewares lain di tumpukan dan langsung ke yang ini.
‫Nah dalam hal ini,
‫sebenarnya tidak ada middleware lain di tengah, oke?
‫Jadi ini benar-benar hanya yang berikutnya
‫di sini, tetapi jika kita menggunakan next dan meneruskan kesalahan di tempat
‫lain, maka tentu saja itu akan bekerja dengan cara yang sama.
‫Jadi sekarang mari kita uji semua
‫ini hanya dengan mencoba mengakses rute yang tidak ditentukan.
‫Dan kemudian akan memicu semua kode ini di sini,
‫lompat ke middleware penanganan kesalahan, dan kemudian
‫kirim kembali respons berdasarkan semua logika ini
‫di sini.
‫Jadi, di sini kita masih memiliki rute yang salah atau tidak ada
‫dan mari kita mulai dengan memanggil yang
‫ini, yang seharusnya masih berfungsi,
‫oke jadi hanya untuk
‫mengonfirmasi bahwa semuanya berfungsi dengan baik dan berhasil, dan
‫sekarang yang ini.
‫Dan memang kami tidak dapat menemukan tur slash API di server
‫ini, sehingga middleware penanganan kesalahan global
‫kami benar-benar melakukan tugasnya.
‫Sempurna, itulah langkah pertama untuk benar-benar menerapkan mekanisme
‫penanganan kesalahan yang jauh lebih baik
‫dalam aplikasi kita.
‫Jadi sekarang kita bisa melanjutkan dan mencoba menerapkan hal-hal
‫semacam ini di sini, di mana-mana di semua
‫penangan kita.
‫Misalnya, di sini di semua fungsi yang kita miliki
‫di sini.
‫Jadi mengganti semua yang kita miliki di sini
‫dengan kesalahan semacam ini.
‫Tapi yang ingin saya lakukan sekarang adalah benar-benar membuat
‫kelas kesalahan kita sendiri.
‫Sehingga kita tidak perlu menulis semua kode ini di sini dan
‫sebagai gantinya memiliki kelas yang lebih seperti streamline dari diri
‫kita sendiri.
‫Jadi itu adalah praktik umum, jadi mari kita lakukan itu di
‫video berikutnya.