Câu hỏi của tôi có liên quan đến hành vi cú pháp của khối try catchBắt ngoại lệ không được ném cục bộ?
rỗng khối try với một nắm bắt như thế này
void fun() {
try {}
catch(Exception e) {}
}
hoặc
try {}
catch(ArrayIndexOutOfBoundsException e) {}
biên dịch tốt nhưng trình biên dịch phàn nàn với
try {}
catch(IOException e) {}
Tại sao trình biên dịch tất cả ow bắt bất cứ thứ gì có kiểu Exception hoặc RuntimeException trong khi nó phàn nàn về mã không truy cập được với các ngoại lệ đã kiểm tra? Có phải vì mã JVM có thể ném các loại đó không? Làm thế nào có thể JVM có thể ném ArrayIndexOutOfBoundsException trong một khối thử rỗng?