Η Java χειρίζεται σφάλματα με try/catch/finally και διακρίνει μοναδικά μεταξύ ελεγχόμενων εξαιρέσεων (πρέπει να δηλωθούν ή να διαχειριστούν) και μη ελεγχόμενων εξαιρέσεων (χρόνος εκτέλεσης, μη επιβεβλημένες). Η κατανόηση αυτής της διάκρισης είναι κεντρική για την διαχείριση σφαλμάτων στη Java.
