Một khối câu lệnh mà điều khiển không bao giờ có thể tiếp cận trong mọi trường hợp có thể được gọi là khối không thể truy cập . Các khối không thể truy cập không được Java hỗ trợ. Khối bắt được đề cập với tham chiếu của Lớp ngoại lệ nên và phải luôn ở cuối cùng bắt khối vì Ngoại lệ là lớp cha của tất cả các trường hợp ngoại lệ. Khi chúng tôi lưu giữ nhiều khối bắt, thứ tự của các khối bắt phải từ cụ thể nhất đến chung chung nhất . tức là các lớp con của Ngoại lệ phải đến trước và các lớp cha sau. Nếu chúng tôi giữ các lớp cha trước và các lớp con sau, trình biên dịch sẽ tạo ra lỗi khối bắt không thể truy cập .
Cú pháp
try { // statements } catch(Exception e) { System.out.println(e); } catch(NumberFormatException nfe) { //unreachable block. Not supported by Java, leads to an error. System.out.println(nfe); }
Một mệnh đề bắt được coi là có thể truy cập được bởi trình biên dịch nếu cả hai điều kiện sau đều đúng
- Một ngoại lệ đã kiểm tra được đưa vào khối try có thể gán cho tham số của C.
- Không có mệnh đề bắt nào trước đó có kiểu tham số bằng hoặc là siêu kiểu của kiểu tham số C
Một mệnh đề bắt được coi là có thể truy cập được bởi trình biên dịch có thể không truy cập được nếu cả hai điều kiện sau đều đúng
- Loại tham số mệnh đề bắt E không bao gồm bất kỳ ngoại lệ nào chưa được kiểm tra.
- Tất cả các ngoại lệ được đưa vào khối try có kiểu là kiểu con (nghiêm ngặt) của E đã được xử lý bởi các mệnh đề nắm bắt trước đó.
Ví dụ
public class UnreachableBlock{ public static void main(String[] args) { try { int i = Integer.parseInt("abc"); //This statement throws NumberFormatException } catch(NumberFormatException nfe) { System.out.println("This block handles NumberFormatException"); } catch(Exception e) { System.out.println("This block handles all exception types"); } catch (Throwable t) { System.out.println("Throwable is super class of Exception"); } } }
Đầu ra
This block handles NumberFormatException