Menu
CoddyTech

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 / count saat count bernilai 0 (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.

challenge icon

Tantangan

Mudah

array 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: potion

Jika tidak, cetak Slot , nomornya, dan is empty. Untuk input 7, output-nya adalah:

Slot 7 is empty

Angka 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online