tôi gần đây đã được loại bỏ một khối mã từ cơ sở mã của chúng tôi trước khi phát hành và sử dụng một if (false) tuyên bố để ngăn chặn thực hiện:Trong khi (false) gây ra tuyên bố unreachable lỗi biên dịch
if (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
này biên dịch tốt và sẽ ngăn chặn việc thực thi khối mã vi phạm (đúng hay sai, đó không phải là đối số hiện tại).
Tuy nhiên, loại một cách tình cờ, tôi đã thay đổi khối ở trên để:
while (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
và nhận được một lỗi tuyên bố biên soạn không thể truy cập.
Tôi đánh giá cao lỗi biên dịch và hiểu lý do, tuy nhiên, tôi đang đấu tranh để hiểu sự khác biệt giữa hai khối và lý do tại sao trước đây biên dịch tốt nhưng sau đó không có khi cả hai đều có báo cáo không thể truy cập.
Tôi đoán là dễ mắc lỗi hơn khi liên kết 'do-while' so với' if'. Đó là lý do tại sao trường hợp thứ hai dẫn đến lỗi. – Renan
Đoán của tôi là ý định ban đầu của tác giả biên dịch là cả hai đều gây ra lỗi không thể truy cập được. Tuy nhiên, bởi vì thực hành lập trình có những người thường tắt mã với if (false), cho phép nó như là một trường hợp đặc biệt. – CBass