Menu
CoddyTech

Apa Itu Runtime Error?

Runtime error adalah error yang terjadi saat program sedang berjalan, ketika sebuah operasi tidak bisa dikerjakan dengan nilai yang dimilikinya, seperti membagi dengan nol atau membaca melewati akhir sebuah list. Program berhenti di baris itu kecuali error-nya ditangani.

Oleh Kevin Spektor, Co-founder & CTO

Diperbarui 24 September 2026

Runtime error menunggu sampai program sudah berjalan. Kodenya lolos dari setiap pemeriksaan sebelum dimulai, berjalan dengan benar untuk sementara waktu, lalu sampai pada sebuah operasi yang tidak bisa dikerjakan dengan nilai yang dimilikinya saat itu. Fungsi ini berhasil untuk satu list dan gagal untuk list lain:

85.0
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    print(average([]))
          ^^^^^^^^^^^
  File "main.py", line 2, in average
    return sum(scores) / len(scores)
           ~~~~~~~~~~~~^~~~~~~~~~~~~
ZeroDivisionError: division by zero

Panggilan pertama mencetak 85.0. Panggilan kedua memberikan list kosong, jadi len(scores) bernilai 0 dan pembagiannya tidak bisa dilakukan. Tidak ada yang salah dengan tata bahasanya, jadi ini bukan syntax error. Masalahnya hanya ada untuk data tertentu, itulah sebabnya runtime error bisa muncul setelah sebuah program berjalan dengan benar seratus kali.

Apa yang terjadi saat runtime error muncul

  1. Program sampai pada sebuah operasi, di sini sum(scores) / len(scores).
  2. Runtime memeriksanya sebelum mengerjakannya. CPython menguji pembaginya sebelum membagi, JVM memeriksa setiap index array, dan Python memeriksa bahwa sebuah key dictionary ada sebelum mengembalikan nilainya.
  3. Pemeriksaannya gagal, jadi runtime membuat sebuah objek error. Di Python dan Java, objek ini adalah exception, dan mencatat jenis error, pesan, serta tempat terjadinya.
  4. Runtime mencari kode yang menangani jenis error itu, pertama di fungsi saat ini, lalu di fungsi yang memanggilnya, dan seterusnya ke arah luar.
  5. Kalau tidak ada yang menanganinya, program berhenti. Python mencetak traceback dan keluar dengan status 1. Java mencetak stack trace yang diawali Exception in thread "main".

Bahasa tanpa pemeriksaan seperti ini berperilaku lain. C tidak memeriksa index array atau pointer, jadi akses memori yang salah bisa diam-diam merusak data atau membuat sistem operasi menghentikan program dengan segmentation fault.

Semua yang sudah dilakukan program sebelum baris yang gagal sudah terjadi. Loop ini mencetak tiga warna sebelum gagal di warna keempat:

red
green
blue
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    print(colors[i])
          ~~~~~~^^^
IndexError: list index out of range

Cara membaca traceback

Baca traceback Python dari bawah ke atas. Baris terakhir menyebutkan jenis error dan pesannya: ZeroDivisionError: division by zero. Baris-baris di atasnya mendaftar rantai panggilan, yang paling lama lebih dulu dan yang paling baru di akhir. Di contoh pertama, baris 5 memanggil average, dan baris 2, di dalam average, adalah tempat pembagiannya gagal.

Baris tempat error terjadi tidak selalu baris yang harus diubah. Baris 2 di average sudah benar. Pertanyaan yang sebenarnya adalah bagaimana list kosong bisa sampai ke sana, jadi telusuri nilai yang salah itu kembali ke asalnya dan perbaiki di sana. Saat sebuah traceback melewati file library yang tidak kamu tulis, cari baris terakhir yang menunjuk ke file-mu sendiri.

Runtime error yang umum

Setiap pesan ini disalin dari Python 3.12.

ErrorContohPesan
ZeroDivisionError10 / 0division by zero
IndexError["red", "green", "blue"][3]list index out of range
KeyError{"theme": "dark"}["font"]'font'
ValueErrorint("twenty")invalid literal for int() with base 10: 'twenty'
TypeError"Total: " + 5can only concatenate str (not "int") to str
AttributeErrormemanggil .upper() pada None'NoneType' object has no attribute 'upper'
FileNotFoundErroropen("missing.txt")[Errno 2] No such file or directory: 'missing.txt'
RecursionErrorfungsi yang memanggil dirinya sendiri tanpa hentimaximum recursion depth exceeded

Java punya padanan langsungnya, seperti ArithmeticException, ArrayIndexOutOfBoundsException, NumberFormatException, dan NullPointerException. Pembagian integer dengan nol yang tidak ditangkap apa pun mencetak ini di Java:

Exception in thread "main" java.lang.ArithmeticException: / by zero

JavaScript lebih longgar soal angka: 10 / 0 menghasilkan Infinity, bukan error. JavaScript gagal saat kamu memakai nilai yang tidak ada. Node.js mencetak ini untuk user.name saat user bernilai undefined:

TypeError: Cannot read properties of undefined (reading 'name')

Cara mengatasi runtime error

  1. Ulangi error-nya. Jalankan program lagi dengan input yang sama dan pastikan kamu mendapat error yang sama.
  2. Baca baris terakhir traceback, lalu temukan baris yang sesuai di kodemu sendiri.
  3. Lihat nilai-nilai yang terlibat. Cetak nilainya tepat sebelum baris yang gagal, atau berhenti di sana dengan breakpoint debugger.
  4. Perbaiki penyebabnya. Koreksi index-nya, jaga kasus khususnya, atau validasi input sebelum memakainya.

Untuk fungsi average, perbaikannya adalah menentukan berapa rata-rata dari nol skor dan menuliskannya di kode:

85.0
0

Sebagian kegagalan berada di luar kendalimu: file yang sudah dihapus, jaringan yang timeout, pengguna yang mengetik huruf di tempat yang seharusnya angka. Kamu tidak bisa mencegahnya dengan memperbaiki kode, jadi kamu menangkapnya dengan exception handling lalu menentukan apa yang dilakukan program berikutnya. Yang tidak boleh kamu lakukan adalah membungkus bug dengan try dan menyembunyikannya. IndexError dari loop yang menghitung satu langkah terlalu jauh adalah kesalahan yang harus diperbaiki, bukan error yang harus ditangkap.

Pesan runtime error di Windows dan Excel

Istilah ini juga muncul di luar kodemu sendiri. Dialog Windows berjudul Microsoft Visual C++ Runtime Library dengan tulisan Runtime Error! berarti sebuah program yang ditulis dalam C++ mengalami error fatal dan runtime C++ menghentikannya. Sebagai pengguna, kamu tidak bisa mengubah kode itu, jadi solusi yang biasa adalah memperbarui programnya, memperbaiki atau menginstal ulang paket Microsoft Visual C++ Redistributable, dan, untuk game, memperbarui driver kartu grafis.

Macro Excel yang ditulis dengan VBA melaporkan runtime error bernomor. Run-time error '9': Subscript out of range berarti macro meminta worksheet atau elemen array yang tidak ada, dan Run-time error '1004' adalah error umum yang muncul saat sebuah operasi pada workbook, sheet, atau range gagal. Idenya sama seperti di Python: kode yang valid bertemu nilai yang tidak bisa ditanganinya.

Lanjut ke mana

Runtime error punya dua saudara: syntax error, yang ditemukan sebelum program dimulai, dan logic error, yang sama sekali tidak pernah menghasilkan pesan. Untuk memulihkan program dari runtime error alih-alih membiarkannya crash, baca exception handling lalu panduan Python tentang exception dan debugging error. Di kursus Python, kamu menulis dan memperbaiki kode seperti ini di setiap pelajaran.

Pertanyaan yang sering diajukan

Apa bedanya runtime error dan syntax error?

Syntax error ditemukan sebelum program dimulai, karena kodenya melanggar tata bahasa bahasa itu, jadi tidak ada baris yang berjalan. Runtime error terjadi belakangan, saat program sedang berjalan, ketika baris yang valid bertemu nilai yang tidak bisa ditanganinya. Setiap baris sebelumnya sudah dijalankan dan mungkin sudah mencetak output.

Kenapa saya terus mendapat runtime error?

Biasanya karena kodenya mengasumsikan sesuatu tentang datanya yang tidak selalu benar: bahwa sebuah list tidak pernah kosong, bahwa sebuah file pasti ada, bahwa pengguna mengetik angka. Setiap asumsi itu berhasil untuk input yang kamu uji dan gagal untuk input yang tidak kamu uji. Uji dengan input yang kosong, nol, hilang, dan sangat besar, lalu periksa atau tangani kasus-kasus itu secara eksplisit.

Apa arti Runtime Error di LeetCode?
Artinya solusimu berhasil di-compile tetapi crash di setidaknya satu kasus uji. Penyebab yang biasa adalah index di luar jangkauan, membagi dengan nol, memakai nilai null atau None, atau rekursi yang terlalu dalam sampai stack-nya overflow. Jalankan sendiri input yang gagal yang ditampilkan di halaman hasil, dan periksa kasus-kasus tepi: array kosong, satu elemen, dan ukuran terbesar yang diizinkan.
Apakah runtime error sama dengan exception?
Tidak persis. Di Python dan Java, sebagian besar runtime error dilaporkan sebagai exception, dan itulah yang membuat program bisa menangkapnya. Tetapi bahasa seperti C punya runtime error tanpa exception sama sekali. Di Java, RuntimeException juga merupakan nama satu keluarga exception tertentu, yaitu yang unchecked seperti NullPointerException.
Bisakah compiler menangkap runtime error?

Hanya sebagian. Compiler atau type checker seperti mypy bisa membuktikan bahwa kesalahan tertentu tidak mungkin terjadi, misalnya menjumlahkan teks dengan angka. Tetapi ia tidak bisa mengetahui nilai yang datang saat program berjalan, seperti angka yang diketik pengguna yang ternyata nol. Error seperti itu hanya bisa ditemukan dengan menjalankan kodenya atau ditangani dengan memeriksa inputnya.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai