Java có hai loại exceptions: unchecked exceptions và checked exceptions.
Unchecked exceptions không cần phải được khai báo trong một phương thức hoặc mệnh đề throws của phương thức khởi tạo, nếu chúng có thể được throw bởi việc thực thi phương thức hoặc hàm tạo và lan truyền bên ngoài phương thức hoặc ranh giới của hàm tạo.
Mặt khác, Checked exceptions phải được khai báo trong một phương thức hoặc mệnh đề throws của phương thức khởi tạo.