Tôi có một câu hỏi rất ngớ ngẩn cho bạn :)try-catch và các biến thức
Ví dụ, tôi đã sau đoạn mã:
class MyClass {
public static void main (String[] args) {
final String status;
try {
method1();
method2();
method3();
status = "OK";
} catch (Exception e) {
status = "BAD"; // <-- why compiler complains about this line??
}
}
public static void method1() throws Exception {
// ...
}
public static void method2() throws Exception {
// ...
}
public static void method3() throws Exception {
// ...
}
}
Câu hỏi đặt ra là bên trong: tại sao biên dịch phàn nàn về dòng này ?
IntelliJ IDEA cho biết, Variable 'status' might already have been assigned to
.
Nhưng, như tôi thấy, chúng tôi không bao giờ đạt đến dòng (nơi chúng tôi đặt status = "OK"
) trong trường hợp ngoại lệ. Vì vậy, biến số status
sẽ là BAD
và mọi thứ sẽ ổn. Và nếu chúng tôi không có bất kỳ ngoại lệ nào, thì chúng tôi sẽ nhận được OK
. Và chúng tôi sẽ thiết lập biến này chỉ có một lần.
Bất kỳ suy nghĩ nào về điều này?
Cảm ơn sự giúp đỡ của bạn!
trình biên dịch mà không phải là thông minh, và nếu bạn đang tuyên bố phương pháp mà có thể ném một trình biên dịch ngoại lệ sẽ không được đấu tranh để kiểm tra nó, vì vậy vì lợi ích của sự đơn giản nó không cho phép điều đó xảy ra – Toumash