‫Selamat datang kembali dan video ini, kami akhirnya akan memperbaiki masalah yang kami miliki dalam program
‫kami di sini, program virtual kami yang kami buat, dan kami juga akan melihat ke dalam pemrograman defensif.
‫Jadi ide pemrograman defensif adalah membuat kode aman yang benar-benar sudah memikirkan masalah apa yang bisa muncul, karena dalam
‫hal ini, masalah yang mungkin muncul adalah, misalnya, daftar kosong atau
‫kita ingin memiliki terlalu banyak teman.
‫Jadi kami ingin mengundang lebih banyak teman daripada yang kami miliki.
‫Dan dalam hal ini, daftarnya sangat sederhana yang kami buat secara manual.
‫Tapi bayangkan itu dari database.
‫Jadi itu berasal dari database atau dari web, dari database cloud atau semacamnya.
‫Dan kemudian itu akan menjadi cerita yang berbeda karena kita tidak akan pernah tahu seberapa besar daftarnya dalam kasus ini.
‫Kita dapat melihatnya dalam kode, tetapi kita mungkin tidak mengetahuinya tergantung dari mana asalnya.
‫Dalam hal ini, kita harus mengantisipasi berbagai masalah yang mungkin muncul dan kita bisa mengujinya sendiri
‫saat berkembang.
‫Misalnya, kita sudah melakukannya kan?
‫Kami memasukkan lebih banyak teman yang kami miliki dalam daftar.
‫Jadi ini sederhana.
‫Kami hanya menjalankan ini dan kemudian kami mendapatkan argumen ini di luar jangkauan pengecualian.
‫Tapi di mana kita mendapatkan itu adalah salah satu yang menarik.
‫Jadi kita mendapatkannya pada titik metode teman pesta kita, meskipun masalahnya terletak di tempat
‫lain, karena jika kita melihatnya, dikatakan daftar nama Shorris nol.
‫Jadi kami mencoba mengakses elemen terlarang yang tidak tersedia karena kami melewati daftar.
‫Dapatkan teman pesta dan kami melewati daftar ini di sini.
‫Jadi jika kita melihat dari mana kita mendapatkan daftar ini, itu bisa menjadi titik awal yang baik karena kita bisa melihat di
‫sini kita mencoba mengakses sesuatu yang tidak tersedia.
‫Jadi apa masalahnya dengan apa yang tersedia?
‫Jadi kita bisa melihat garis ini di sini, mendapatkan bagian depan.
‫Di situlah disebut.
‫Dan kita bisa melihat.
‫Baiklah, itu buffernya.
‫Benar?
‫Jadi kami mendapatkan buffer, yang merupakan daftar ini di sini.
‫Jadi apa yang kita dapatkan adalah daftar dari tingkat atas.
‫Jadi, sekali lagi, kita bisa melihat, baiklah, kita mendapatkan daftar ini dari si anu, begitu banyak orang dan
‫dari sinilah kita mendapatkan nilainya.
‫Dan baik, poin yang baik untuk memeriksa apakah daftar itu bagus sebenarnya dalam metode teman pihak yang arget, karena di sini kita mendapatkan
‫daftarnya dengan benar.
‫Jadi pada titik ini kami memiliki daftar sehingga kami dapat memeriksa daftar ini.
‫Kita dapat melihat apakah daftar ini cukup baik untuk apa yang ingin kita lakukan.
‫Dan yang ingin kami lakukan adalah menulis sesuatu berdasarkan akun elemen
‫dalam daftar itu sehingga kami dapat memeriksa apakah hitungannya lebih besar dari jumlah titik daftar.
‫Dan ini adalah daftar yang diberikan kepada kami.
‫Jadi kalau begitu, yang bisa kita lakukan adalah mencetak sesuatu, jangan melakukan itu atau kesalahan atau
‫semacamnya.
‫Tetapi hal yang lebih baik yang dapat kita lakukan adalah kita dapat membuat program Kresh.
‫Jadi kita tahu bahwa program tersebut memiliki masalah.
‫Tetapi pada saat yang sama kami menghentikan program agar tidak dieksekusi pada tahap yang sangat awal karena bayangkan kami memiliki koneksi ke
‫database dan sekarang kami membuat semua kesalahan yang berbeda ini atau kami hanya akan melalui kode dan metode
‫ini mendapatkan teman pesta sedang berjalan dan katakanlah itu terhubung ke database dan menulis sesuatu
‫ke dalam database dan kemudian kita menjalankan kodenya lagi.
‫Dan untuk beberapa alasan, status basis data telah berubah dan sekarang kami terkejut karena data yang ditampilkan kepada
‫kami benar-benar tidak masuk akal dan kami bekerja dengannya.
‫Jadi memperbaiki bug itu akan menjadi masalah nyata.
‫Baiklah.
‫Jadi kita sudah bisa menangkapnya sedini mungkin sehingga kita bisa melempar argumen di luar jangkauan pengecualian di sini.
‫Jadi buang argumen baru di luar jangkauan pengecualian karena itulah yang kami lakukan dengan benar.
‫Dan argumen dari pengecualian Reagan memiliki banyak kelebihan.
‫Jadi kita bisa memiliki yang ini di sini dengan nama Parum.
‫Kami dapat memiliki pesan dan dengan pengecualian atau nama Perram dengan pesan.
‫Jadi di sini saya hanya bisa mengatakan sesuatu seperti, OK, hitungan adalah masalahnya dan hitungan tidak boleh lebih besar dari
‫elemen dalam daftar atau sesuatu seperti itu.
‫OK, jadi itu bisa menjadi contoh untuk apa yang bisa kita tampilkan.
‫Jadi mari kita jalankan lagi, karena sekarang kita seharusnya bisa menangkap kesalahan ini atau setidaknya mengeluarkan argumen di luar jangkauan
‫pengecualian setelah kita mendapatkan kesalahan ini.
‫Baiklah.
‫Jadi kita bisa melihat luar biasa tidak tertangani.
‫Ini adalah argumen sistem di luar jangkauan.
‫Pengecualian tidak boleh lebih besar dari elemen dalam daftar.
‫Jumlah parameter.
‫Jadi itulah hasil dari apa yang kami tulis di sini.
‫OK, jadi seperti inilah tampilan pengecualiannya.
‫Jadi sekarang kita tahu apa masalahnya.
‫Ini sedikit lebih ekspresif tepat sebelum masalahnya tidak ada di sini.
‫Jadi izinkan saya mengomentari dua baris itu.
‫Masalahnya tidak dilemparkan pada titik ini, tetapi dilemparkan lebih jauh ke bawah.
‫Itu dilemparkan ke dalam metode get berbeda kami, jadi ada di baris 42, tetapi masalah sebenarnya muncul jauh lebih
‫awal, bukan.
‫Dan indeks adalah pengecualian, tetapi itu juga pernyataan yang sangat umum, bukan?
‫Itu bisa apa saja.
‫Benar.
‫Jadi menangkapnya lebih awal membantu kita melihat di mana masalahnya.
‫Jadi apa yang kita bisa, tentu saja, lakukan adalah kita bisa mengatakan, OK, setelah kita memasukkan
‫nilai ini dan katakanlah nilai ini berasal dari pengguna yang memasukkan nilai.
‫Benar.
‫Jadi Anda dapat memasukkan nilai apa pun dari nol hingga jumlah elemen daftar yang kami miliki.
‫Jadi kita bisa menangkapnya lebih awal.
‫Kita bisa melakukan tes bahkan di sini.
‫Jadi jika.
‫Teman, hitungan itu.
‫Kurang dari nilai yang kita masukkan di sini dan kita bisa mendapatkan nilai ini lagi dari pengguna, lalu kita bisa
‫memberinya pesan, bukan?
‫Kami tidak akan membuang pengecualian kami.
‫Kami tidak akan membuat program kami macet.
‫Kami hanya akan meminta pengguna untuk memasukkan nilai baru lagi.
‫Tapi kami tidak melakukannya di sini karena kami sebagai programmer dapat memasukkan nilai di sini dan kami memaksa kesalahan ini secara
‫manual sekarang.
‫Benar.
‫Oke, jadi itu salah satu cara untuk mengatasinya atau sebenarnya salah satu cara untuk menangkapnya sejak dini.
‫Sekarang, katakanlah.
‫Kami memasukkan nilai bodoh di sini, seperti minus satu.
‫Baiklah, sekarang mari kita jalankan lagi.
‫Sebenarnya, mari kita jalankan lagi.
‫Dan program kami tampaknya berfungsi, tetapi tidak menunjukkan apa pun di sana, jadi tidak menunjukkan apa pun.
‫Panah tidak menimbulkan kesalahan apa pun, tetapi tidak menunjukkan teman apa pun.
‫Nah, program kami tampaknya bekerja dengan minus satu karena kami mencoba untuk mendapatkan elemen daftar minus satu dari
‫daftar kami dan yah, itu tidak memberi kami informasi berharga apa pun.
‫Jadi sekarang yang bisa kita lakukan adalah menambahkan kondisi lain di sini.
‫Hitungannya harus Krater sama dengan nol.
‫Jika bukan itu masalahnya, maka kita dapat menulis sesuatu seperti kode tidak boleh lebih besar dari
‫elemen dalam daftar atau nol lebih rendah.
‫OK, jadi itu hanya salah satu cara untuk mengekspresikannya.
‫Dan sekarang jika kita menjalankannya lagi, kita akan membuang kesalahan ini.
‫OKE.
‫Jadi itu adalah sesuatu di mana program tidak muncul sebelumnya, tetapi sekarang kami sebagai pengembang, mengerti, OK, ini adalah keadaan
‫yang tidak ingin kami miliki.
‫Ini adalah situasi yang tidak ingin kita tangani, oke?
‫Dan seperti yang saya katakan, kami akan memotong sementara kami akan mencoba untuk mendapatkan nilai ini dari suatu tempat dan kami akan mencoba
‫untuk menangkapnya bahkan sebelum itu.
‫Sekarang, mari kita asumsikan kita memiliki situasi yang bahkan lebih lucu.
‫Jadi kami memiliki situasi di mana daftar teman saya kosong.
‫Jadi saya hanya akan membuat daftar kosong di sini.
‫Seperti begitu.
‫Sekarang, ini akan menjadi keraguan dan sekarang kita memiliki daftar kosong ini, mari kita jalankan lagi dan lihat apakah program
‫kita masih berfungsi.
‫Dan sekarang kami masih mendapatkan argumen kami di luar jangkauan pengecualian, jadi itu cukup keren.
‫Jadi sepertinya pengecualian yang kami buat di sini memperbaiki masalah ini.
‫Jadi kita tidak perlu melihat secara manual seperti apa daftarnya, meskipun kosong.
‫Benar.
‫Jadi jika Anda melihat daftar teman kami, daftar teman kami kosong, tetapi pada akhirnya, kami mendapatkan hitungan
‫nol.
‫Jadi meskipun daftarnya nol, daftarnya tetap nol.
‫Jadi nilai yang kita dapatkan disana masih nol.
‫Tapi itu tidak semua kita benar-benar bisa untuk aktual sekarang.
‫Jadi, alih-alih menguraikan Prancis dengan Prancis, yang merupakan daftar kosong ini, kita sebenarnya dapat melewatkan nol di sini.
‫Jadi katakanlah untuk beberapa alasan kami tidak dapat membuat daftar ini karena koneksi database tidak berfungsi atau
‫semacamnya.
‫Dan kami masuk sebagai hasilnya.
‫Dan sekarang kami melewati sekarang dan kami mencoba untuk meneruskan sekarang ke metode yang benar-benar membutuhkan daftar.
‫Jadi mari kita jalankan dan mari kita lihat kesalahan seperti apa yang kita dapatkan kali ini.
‫Jadi sekarang kita mendapatkan referensi nol, pengecualian, referensi objek, tidak disetel ke instance dari daftar objek
‫adalah nol.
‫Jadi daftar yang kami lewati sekarang adalah sekarang.
‫Jadi kami mendapatkan kesalahan ini bahkan sebelum kami dapat membuat kesalahan.
‫Jadi apa yang bisa kita lakukan, tentu saja, adalah kita bisa menangkap situasi ini juga, jadi kita bisa melanjutkan
‫dan menulis pernyataan if yang lain.
‫Jika daftar adalah nol, maka lempar pengecualian penunjuk lainnya.
‫Lemparkan argumen null pengecualian baru.
‫Jadi daftar.
‫Daftarnya kosong, oke, tentu saja, ini bisa lebih deskriptif, jadi daftarnya tidak boleh
‫kosong.
‫Silakan periksa koneksi internet atau semacamnya.
‫Itu bisa berupa koneksi Internet atau dari mana pun Anda mendapatkan data.
‫OKE.
‫Jadi mari kita jalankan lagi, dan kita harus membuang pengecualian argumen null kita, seperti yang Anda lihat,
‫daftarnya adalah daftar parameter kosong yang sempurna.
‫Baiklah.
‫Sekarang, Anda mungkin bertanya-tanya, mengapa kita melakukan semua ini?
‫Saya tidak ingin program saya macet sepanjang waktu.
‫Nah, kami melakukan ini agar program kami tidak masuk ke keadaan di mana ia benar-benar akan mengubah sesuatu
‫dalam database.
‫Kami tidak mengubah apa pun dalam database dan program kecil kami.
‫Tapi bayangkan itu akan terjadi kemudian.
‫Ini adalah situasi yang sangat berbeda dan kami dapat membuat beberapa masalah serius di sini.
‫Sekarang, saya ingin menunjukkan satu hal terakhir, karena sebelumnya kita memiliki semua hak ini, jadi
‫sebelum kita memiliki pernyataan if ini dan ini dan itu dan seterusnya, dan sebelum kita memiliki daftar teman ini.
‫Ya, saya benar-benar bisa berhenti sebelum kami memiliki teman di sini dan kami melewati teman di sana, dan kemudian kami mencoba untuk memiliki
‫10 teman di pesta kami, tetapi kami hanya memiliki tujuh teman.
‫Jadi situasi ini, setelah kita menjalankan, ini yang bisa kita lakukan adalah kita bisa memaksa kesalahan yang kita miliki dan kesalahan itu ada pada
‫teman pesta kita.
‫OK, jadi kita mendapatkan argumen ini di luar jangkauan.
‫Indeks pengecualian berada di luar jangkauan.
‫Jadi itu masalah yang kami miliki sebelum kami memperbaikinya.
‫Benar.
‫Tapi sekarang hal menarik yang bisa kita lihat adalah tumpukan panggilan.
‫Jadi ada sesuatu yang disebut tumpukan panggilan.
‫Dan biarkan saya membuatnya sedikit lebih besar di sini, sebenarnya.
‫Maksudku, tutup semua itu.
‫Jadi sekarang mari kita lihat tumpukan panggilan ini.
‫Tumpukan panggilan ini di sini mengatakan bahwa kami saat ini berada di antrean empat puluh enam.
‫Baiklah.
‫Di situlah kita berada.
‫Jadi kita mendapatkan metode yang berbeda.
‫Sekarang, jika kita melangkah lebih tinggi, kita dapat melihat bahwa ini adalah tempat untuk mendapatkan metode front party dipanggil.
‫Sekarang kita berada di dalam metode jamak get party friends.
‫Dan apa yang kami ingin tahu di mana metode ini dipanggil.
‫Nah itu disebut di baris 13.
‫Jadi dengan call stack, kita bisa melihat dari mana kita dipanggil, dari mana kita dipanggil lagi dan lain sebagainya.
‫Jadi kita bisa naik sampai ke level yang kita inginkan.
‫Metode awal dipanggil dan metode awal untuk mendapatkan teman pesta dipanggil.
‫Lalu kita masuk ke loop while ini, lalu get get party friend dipanggil dan kita masuk ke metode ini di sini.
‫Dan akhirnya variabel kita dibuat berdasarkan daftar yang kosong.
‫Baiklah.
‫Jadi saya harap ini memberi Anda sedikit pengenalan tentang debugging.
‫Tentu saja, masih banyak lagi yang perlu diketahui, tetapi saya tidak ingin membuat Anda bosan dengan
‫semua detailnya karena beberapa hal berguna.
‫Tetapi banyak dari mereka tidak akan diperlukan dalam kehidupan sehari-hari Anda karena, maksud saya, secara umum, Anda tentu saja
‫dapat, melanjutkan dan pergi ke debug dan kemudian memeriksa semua jendela berbeda yang bisa Anda dapatkan di sini
‫dan Anda bisa melihat ke dalam ancaman yang berjalan secara paralel, proses dan sebagainya.
‫Tapi saya pikir apa yang Anda lihat sekarang benar-benar akan menjadi hal utama atau akan menjadi hal utama
‫yang akan Anda perlukan, alat utama yang akan Anda perlukan untuk men-debug perangkat
‫lunak Anda.
‫Baiklah.
‫Jadi saya harap Anda menikmati ini dan saya harap Anda dapat memanfaatkan ini dalam program-program Anda yang akan datang.
‫Dan sekarang Anda akhirnya dapat melihat bagaimana debugging diselesaikan.
‫Dan omong-omong, terima kasih telah memberikan umpan balik ini, karena saya mendapat umpan balik bahwa bagian debugging hilang,
‫jadi saya memutuskan untuk membuat bagian kecil ini.
‫Jadi terima kasih banyak atas umpan baliknya.
‫Jika Anda memiliki sesuatu yang menurut Anda kurang dalam kursus ini atau jika Anda merasa ada sesuatu yang
‫sangat buruk, tolong jangan beri saya penilaian buruk secara langsung.
‫Tetapi beri tahu saya apa itu agar saya dapat meningkatkan kursus, karena tujuan saya adalah menjadikan ini penggunaan terbaik,
‫tentu saja, di pasar.
‫Jadi terima kasih banyak atas bantuan Anda dan berharap untuk melihat Anda di video berikutnya.