Memahami `panic`
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 42 dari 68.
Di Go, panic adalah fungsi bawaan yang digunakan untuk situasi luar biasa ketika programmu mengalami error yang tidak dapat dipulihkan dan harus segera berhenti. Berbeda dengan error biasa yang kamu tangani dengan baik, panic digunakan khusus untuk kegagalan katastrofik yang menunjukkan bahwa ada sesuatu yang secara mendasar salah dengan logika atau lingkungan programmu.
Saat panic dipanggil, eksekusi normal fungsi saat ini langsung berhenti dan proses penguraian call stack dimulai. Hal ini membuatnya sangat berbeda dari pendekatan Go yang umum, yaitu mengembalikan error yang dapat ditangani oleh kode pemanggil.
Dalam Go yang idiomatis, panic jarang digunakan. Komunitas Go sangat mengutamakan penanganan error secara eksplisit melalui nilai kembalian daripada penanganan error berbasis panic. Kamu mungkin menemukan panic dalam situasi seperti mengakses array di luar batas, melakukan dereferensi pointer nil, atau saat library mendeteksi kondisi mustahil yang menunjukkan bug pemrograman.
Sebagian besar program Go sebaiknya menangani error dengan baik menggunakan interface error standar yang telah kamu pelajari. panic sebaiknya dipertimbangkan hanya jika benar-benar tidak ada cara yang masuk akal bagi programmu untuk terus berjalan.
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas7Penanganan Error secara Mendalam
Tipe Error KustomMembungkus Error dengan `%w`Membuka Bungkus Error dengan `errors.Is`Membuka Bungkus Error dengan `errors.As`Memahami `panic`Menggunakan `recover`Rangkuman: Pembagian Aman2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online