cuốn sách gpt4 ai đã làm

java — Làm sạch mã trong phần cuối cùng () hoặc cuối cùng ()?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:03:16 26 4
mua khóa gpt4 Nike

Tôi thường nghĩ rằng việc dọn dẹp tài nguyên được thực hiện trong finally Hoàn thành trong khối,
Gần đây tôi tìm thấy đoạn mã cụ thể này trong một lớp ghi đè Object loại'hoàn thiện()方法。

được bảo vệ void hoàn thiện () {  
thử {
Ghim theo();
Out.close();
socket.close();
}
bắt (Ngoại lệ e) {
// mã logger ở đây
}
}

Đây có phải là một ý tưởng tốt? hoàn thiện() liên quan đến finally Ưu điểm và nhược điểm của là gì?

câu trả lời hay nhất

finally khối chỉ là một thử Khối mã được thực thi sau khối, ngay cả khi xảy ra ngoại lệ. tức là nó có phạm vi cục bộ

hoàn thiện() Phương thức là một cách để dọn sạch toàn bộ đối tượng trong quá trình thu gom rác.

Tài liệu Java về hoàn thiện()

finally Đã giải quyết vấn đề dọn sạch tài nguyên trong một đoạn mã bất kể có xảy ra ngoại lệ hay không...hoàn thiện() là một cách để dọn sạch tài nguyên khi đối tượng của bạn không còn được sử dụng nữa, một khi trình thu gom rác xác định rằng không còn tham chiếu nào đến đối tượng nữa.

Tóm lại, để trả lời câu hỏi của bạn, ví dụ: nếu ổ cắm bạn muốn đóng là thành viên của một đối tượng, bạn nên thực hiện điều đó trong hoàn thiện() phương thức, (mặc dù điều này là chưa tối ưu, chẳng hạn, vì không có gì đảm bảo khi nào GC sẽ thực sự thực hiện thao tác này)

Tuy nhiên, nếu bạn mở socket trong một phương thức và khi phương thức đó kết thúc thì bạn đã hoàn tất nó, bạn nên thả ra finally tài nguyên trong khối.

Giới thiệu về java - Làm sạch mã trong phần cuối cùng() hoặc cuối cùng()? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1843905/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress