Có hai loại ngoại lệ trong Java: kiểm tra và bỏ chọn ngoại lệ.
Đối với ngoại lệ được kiểm tra, trình biên dịch sẽ kiểm tra xem chương trình của bạn có xử lý chúng hay không bằng cách đánh dấu chúng hoặc bằng cách chỉ định (với mệnh đề throws
) là phương pháp mà ngoại lệ có thể xảy ra.
Loại ngoại lệ là các lớp con của java.lang.RuntimeException
(và chính bản thân số RuntimeException
) là các ngoại lệ không được kiểm soát. Đối với những trường hợp ngoại lệ, trình biên dịch không thực hiện kiểm tra - vì vậy bạn không bắt buộc phải bắt chúng hoặc chỉ định rằng bạn có thể ném chúng.
Lớp InterruptedException
là ngoại lệ được kiểm tra, vì vậy bạn phải nắm bắt hoặc tuyên bố rằng phương pháp của bạn có thể ném nó. Bạn đang ném ngoại lệ từ khối catch
, vì vậy bạn phải xác định rằng phương pháp của bạn có thể ném nó:
public void invalid() throws InterruptedException {
// ...
lớp ngoại lệ mà mở rộng java.lang.Exception
(trừ RuntimeException
và lớp con) là trường hợp ngoại lệ kiểm tra.
Xem Sun Java Tutorial about exceptions để biết thông tin chi tiết.
Bạn gặp phải loại lỗi nào? – Simon
Nó nói: ngoại lệ không được báo cáo java.lang.InterruptedException; phải bị bắt hoặc tuyên bố bị ném – fireshadow52