Materi
Java bertipe statis: setiap variabel diberi tipe saat dibuat, dan kompilator memeriksa seluruh berkas sebelum satu baris pun dijalankan. Kesalahan tata tulis atau tipe ditemukan pada tahap ini, dan programnya tidak berjalan sama sekali, termasuk baris-baris yang benar di atasnya. Ini berbeda dari Python atau JavaScript yang baru tersandung ketika sampai di baris bermasalah.
public class Stok {
public static void main(String[] args) {
System.out.println("Cek stok")
int jumlah = "25";
}
}Kompilator menjawab Stok.java:3: error: ';' expected, karena baris 3 tidak diakhiri titik koma. Formatnya selalu nama berkas, nomor baris, lalu penjelasannya, disertai tanda ^ di bawah posisi yang dimaksud. Teks Cek stok tidak pernah tercetak. Galat tata tulis menghentikan pemeriksaan lebih awal, jadi galat baris 4 baru muncul setelah titik komanya ditambahkan: Stok.java:4: error: incompatible types: String cannot be converted to int, karena teks tidak bisa disimpan di variabel int.
Kode yang lolos kompilasi masih bisa berhenti saat berjalan. Pembagian bilangan bulat dengan nol, misalnya, baru diketahui ketika nilainya sudah ada. Java lalu melempar exception dan mencetak stack trace: nama exception, pesannya, dan baris tempat kejadiannya. Semua yang dicetak sebelum baris itu tetap tampil.
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Bagi.main(Bagi.java:6)