Hãy tha thứ cho tôi nếu đây là một câu hỏi ngu ngốc, nhưng theo như tôi biết, tất cả các trường hợp ngoại lệ Java phải bị bắt và xử lý. Ví dụ, một cái gì đó như thế này sẽ tạo ra một lỗi biên dịch:Làm thế nào để các chương trình Java có thể gặp lỗi khi ngoại lệ phải luôn luôn bị bắt?
public String foo(Object o) {
if (o instanceof Boolean) {
throw new Exception();
}
return o.toString();
}
Bởi vì phương pháp foo()
không thêm một điều khoản throws
.
Tuy nhiên, ví dụ này sẽ làm việc (trừ khi một trong hai phương pháp foo()
không có một điều khoản throws
hoặc phương pháp bar()
không xung quanh việc sử dụng của foo()
trong một khối try/catch
):
public String foo(Object o) throws Exception {
if (o instanceof Boolean) {
throw new Exception();
}
return o.toString();
}
public void bar(Object o) {
try {
String s = foo(o);
}
catch (Exception e) {
//...
}
//...
}
Cuối cùng, đôi khi một chương trình Java đôi khi vẫn gặp sự cố do một trường hợp ngoại lệ unhandled.
Điều này xảy ra như thế nào?
Chúng không phải lúc nào cũng bị bắt và xử lý. Đó là vấn đề. –
Tất cả [** biểu thức được chọn **] (https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html) ... –
Cung cấp dấu vết ngăn xếp của bạn để chúng tôi có thể xem ngoại lệ là gì. – Alex