Giả sử rằng đoạn mã này là trong 20 nơi và luôn luôn giống nhauCatch ngoại lệ riêng biệt hoặc sử dụng instanceof - Java 6
try {
// do something
} catch (FirstException e) {
// log it
} catch (SecondException e) {
// log it
}
sẽ không thể tốt hơn để sử dụng một cái gì đó như thế này hay instanceof
không phải là giải pháp tốt?
try {
// do something
} catch(Exception e) {
logException(e);
}
void logException(Exception e) {
if (e instanceof FirstException) {
// log it
} else if (e instanceof SecondException) {
// log it differently
} else {
// do something with other exception
}
}
Điều duy nhất mà tôi thực sự ghét về giải pháp là bắt Exception
đó là definitelly không phải là cách tốt nhất ... Có cách nào tốt hơn?
Tôi muốn sử dụng cách tiếp cận đầu tiên và gọi logException cho tất cả các ngoại lệ bị bắt. – Thihara
Điều gì sẽ xảy ra nếu 'FileNotFoundException' bị ném !!! – Azodious
Nắm bắt từng ngoại lệ riêng biệt chỉ có ý nghĩa khi bạn định thực hiện xử lý khác nhau cho mỗi trường hợp. Trong các ứng dụng thực tế, điều này hiếm khi xảy ra. Cách tiếp cận khả thi là bắt tất cả bằng cách sử dụng superclass 'Exception' hoặc 'Throwable' nếu lỗi thời gian chạy là mối quan tâm chính và ** đăng nhập ** chúng một cách chính xác để có ý nghĩa với nhà phát triển ở đâu và những gì thực sự xảy ra. – Vrushank