30/09/2018, 20:36

Exception trong Java

Em có thắc mắc liên quan đến phần Exception Class trong Java như thế này:
Có khá nhiều exception class dùng cho try{ } catch ( exception_class e){ } như InputMismatchException, IOException, NoSuchMethodException, FileNotFoundException…
Các class này có nhất thiết phải sử dụng cho các trường hợp tương ứng mà nó hỗ trợ không ạ? Trong khi ta lại có class Exception có thể dùng bắt mọi ngoại lệ, tại sao không dùng nó cho mọi lúc mà lại phải chia ra các exception class khác nữa thế ạ.
Xin cảm ơn.

Truong Pham viết 22:51 ngày 30/09/2018

Nhiều khi mình cần chỉ rõ ràng loại Exception để thông báo và xử lý một cách chính xác nhất

Đạt Đỗ viết 22:42 ngày 30/09/2018
try{
}
catch (IOException e){

}
catch (Exception e){

}

Nó bắt lỗi theo thứ tự IOException rồi đến Exception. Vậy khi bắt từng lỗi sẽ chính xác hơn.

Đoàn Hiếu Tâm viết 22:50 ngày 30/09/2018

Thường 1 chương trình bi dính Exception có thể do nhiều nguyên nhân. Bạn phải ghi cụ thể ra cho người dùng ví dụ lỗi nhập xuất, lỗi không có trong dữ liệu,… Catch exception theo thứ tự từ cụ thể đến tổng quát.

Quốc Hùng viết 22:46 ngày 30/09/2018

Các class như IOException, FileNotFoundException, ArrayOutOfBoundException hoặc NullPointerException là con (kế thừa) của super class Exception
Những class con này sẽ là trường hợp cụ thể còn Exception sẽ là chung chung

Vd: bạn có 1 cái xe vs ngoại lệ chung là "Hỏng" và sẽ có các trường hợp như
"Hỏng Bô", "Hỏng phanh", "Hỏng bình xăng", "Hỏng đèn",... thì các trường hợp
trên thì chỉ cần nói vs ông chủ sửa xe là Hỏng cái gì đấy -> Ổng sẽ tìm đến đúng
vị trí ấy và xem (nếu có lỗi thì chữa, không thì ê mặc đi về =)).) -> 6-9 phút
Còn bạn đến và nói "Chú xem giùm con nó bị lỗi đíu gì mà ếch chạy được :V"
ông thợ sữa sẽ mò tất cả chung quanh địa điểm có thể hỏng hóc mà sửa
=> 69 phút

Thì giống như vậy, việc dùng Exception không giúp bạn xác định đều gì phải làm trong khi gặp các trường hợp khác mà còn làm chậm các thread của bạn

Khi "Hỏng" -> Thay mới
"Bô xe hỏng" -> "Hỏng" -> Thay mới
"Cái đèn xe bị lỏng dây" -> "Hỏng" -> Thay mới
dafug!!! Ghim lại là được mà %&^%&*^$&$^$%&

Đó là lí do tại sao người ta tạo ra các con của Exception

Bài liên quan
0