try-with-resources
در جاوا، «try-with-resources» یعنی باز و بستن خودکارِ منبع. «منبع (Resource)» مثل فایل یا جریان ورودی خروجی است. اگر منبع را نبندی، حافظه هدر می رود. همچنین ممکن است فایل قفل بماند. پس بهتر است بستن منبع را به خود جاوا بسپاری.
بستن دستی منبع
قدیما باید close() را خودت صدا می زدی. اگر یادت می رفت، مشکل می شد.
مثال: بستن دستی
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileOutputStream output = new FileOutputStream("filename.txt");
output.write("Hello".getBytes());
output.close();
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("Error writing file.");
}
}
}
try-with-resources از جاوا 7
در این روش، منبع داخل پرانتز try(...) تعریف می شود. سپس جاوا در پایان بلوک، منبع را خودکار می بندد. حتی اگر خطا رخ دهد.
مثال: بستن خودکار
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileOutputStream output = new FileOutputStream("filename.txt")) {
output.write("Hello".getBytes());
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("Error writing file.");
}
}
}
چرا try-with-resources؟
- امن تر است؛ همیشه منبع بسته می شود.
- تمیزتر است؛ دیگر
close()تکراری نداریم. - کوتاه تر است؛ کد راحت تر خوانده می شود.
گام های عملی سریع
- منبع لازم را مشخص کن.
- آن را داخل
try(...)تعریف کن. - عملیات را انجام بده و خطاها را بگیر.
نکته: با فایل ها و جریان ها بهتر است از try-with-resources استفاده کنی. برای آشنایی بیشتر با استثناها، بخش try-catch را ببین. همچنین مدیریت چند استثنا را مرور کن. اگر دنبال راهنمای کامل هستی، از try-with-resources جاوا استفاده کن.
جمع بندی سریع
- منبع داخل
try(...)تعریف می شود. - جاوا منبع را خودکار می بندد.
close()دستی لازم نیست.- کد کوتاه تر و امن تر می شود.