Apa Itu Penanganan Error?
Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 66 dari 78.
Program bisa berhenti di tengah karena error. Kode ini meminta slot 5 dari array yang hanya memiliki tiga elemen:
var inventory := ["sword", "shield", "potion"]
var slot := 5
print(inventory[slot])
print("Done")Godot melaporkan Out of bounds get index '5' dan fungsi berhenti pada baris itu, jadi Done tidak pernah dicetak. Ini adalah runtime error: kodenya valid, tetapi nilai yang didapat saat dijalankan membuat satu baris mustahil dijalankan.
Error saat runtime yang paling sering kamu temui adalah:
- membagi bilangan bulat dengan nol, seperti pada
10 / countsaatcountbernilai0(hal yang sama berlaku untuk%) - membaca key yang tidak ada dengan tanda kurung siku, seperti pada
player["mana"] - indeks di luar array, seperti
inventory[5]di atas
Python dan Java dapat menangkap error setelah terjadi, dengan try dan except atau catch. GDScript tidak memiliki exception dan tidak memiliki try. Penanganan error di GDScript berarti memeriksa nilai sebelum baris yang bisa gagal, lalu menentukan tindakan penggantinya:
if slot >= 0 and slot < inventory.size():
print(inventory[slot])
else:
print("Slot ", slot, " is empty")Pemeriksaan ini memerlukan kedua bagian. Indeks negatif seperti -1 bukan error: indeks tersebut membaca dari akhir array, yang bukan arti nomor slot.
Ketika error terjadi di dalam fungsi yang kamu panggil, fungsi itu berhenti dan mengembalikan nilai kosong, seperti 0 atau null, lalu pemanggil melanjutkan dengan nilai yang salah itu. Beberapa kesalahan menghasilkan nilai yang salah tanpa error: int("abc") menghasilkan 0.
Tantangan
Mudaharray inventory memiliki empat slot, bernomor mulai dari 0. Program membaca satu baris input: nomor slot (bilangan bulat, mungkin negatif).
Jika slot tersebut ada, cetak Slot , nomornya, : dan itemnya. Untuk input 2, output-nya adalah:
Slot 2: potionJika tidak, cetak Slot , nomornya, dan is empty. Untuk input 7, output-nya adalah:
Slot 7 is emptyAngka negatif tidak pernah menjadi slot: untuk -1, cetak Slot -1 is empty. Program tidak boleh berhenti karena error.
Coba sendiri
extends Node
func _ready():
var inventory := ["sword", "shield", "potion", "bow"]
var slot := int(OS.read_string_from_stdin())
# Cetak item di slot tersebut, atau beri tahu bahwa slot tersebut kosong
pass
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Method untuk StringMencari dalam StringMengganti dan Menghapus SpasiMemisahkan dan MenggabungkanUlasan: Memeriksa Nama Pengguna4Dictionary Bagian 2
Dictionary BersarangArray berisi DictionaryMenggabungkan DictionaryMenyalin DictionaryRangkuman: Penghitung Frekuensi10Fungsi Lanjutan
Mengembalikan Beberapa NilaiFungsi Lambda Bagian 1Fungsi Lambda Bagian 2Ringkasan: Mengurutkan dengan LambdaFungsi Rekursif Bagian 1Fungsi Rekursif Bagian 2Ringkasan: Menjumlahkan array Bersarang13Sistem Manajemen Inventaris
Ikhtisar ProyekTambahkan Barang2Pengambilan Keputusan Lanjutan
Pencocokan dengan VariabelGuard pada MatchPola arrayPola dictionaryPemeriksaan KeanggotaanUlasan: Parser Perintah5Aplikasi Buku Kontak
Tampilkan MenuTambah Kontak8Pengelola Data Siswa
Gambaran Umum ProyekTambah Siswa11Fungsi Tingkat Tinggi
Method mapMethod filterMethod reduceany dan allUlasan: Validator EmailUlasan: Pemroses Angka3Array Multidimensi
Dasar-Dasar Array 2DMengakses Elemen Array 2DNested Loop dengan Array 2DRangkuman: Array 2DArray Tidak BeraturanPola Umum Array 2DRangkuman: Papan Permainan6Set dengan Dictionary
Apa Itu Set?Dictionary sebagai SetMenambahkan dan MenghapusUnion dan IntersectionSelisih SetRangkuman: Menghapus Duplikat9Agregasi Data Lanjutan
Menjumlahkan NilaiMencari Nilai Minimum dan MaksimumPengurutan KustomUlasan: Pengurut dictionary12Penanganan Error Dasar
Apa Itu Penanganan Error?Memvalidasi InputKlausa PenjagaMengembalikan Kode ErrorRingkasan: Pembagian AmanLatihan sendiri: Compiler GDScript online