try-with-resources
try مع إدارة تلقائية للموارد try-with-resources
try-with-resources تُغلق الموارد (ملفات، اتصالات، تدفقات) تلقائيًا بعد الانتهاء — بديل finally اليدوي.
منذ Java 7، يمكنك وضع الموارد القابلة للإغلاق (AutoCloseable) داخل أقواس try — تُغلق تلقائيًا حتى لو حدث استثناء. أبسط وأوضح بكثير من finally اليدوي.
الصياغة
try (Resource r = new Resource()) {
// استخدام المورد
} // يُغلق تلقائيًا هنا
// عدة موارد:
try (var in = new FileInputStream("a.txt");
var out = new FileOutputStream("b.txt")) {
// ...
}📄 مثال
import java.io.*;
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} // br يُغلق تلقائيًا
// مقارنة مع finally اليدوي (الطريقة القديمة):
BufferedReader br2 = null;
try {
br2 = new BufferedReader(new FileReader("file.txt"));
// ...
} finally {
if (br2 != null) br2.close(); // يدوي ومعرض للخطأأهم النقاط
| العنصر | الوظيفة |
|---|---|
| try (Resource r) | يُغلق r تلقائيًا عند الانتهاء (يُنفذ close()) |
| AutoCloseable | أي صنف يُنفذ هذه الواجهة يمكن استخدامه هنا |
| عدة موارد | يُغلق كل مورد بالترتيب العكسي لإعلانه |
💡 نصائح عملية
- استخدمها دائمًا بدل finally لإغلاق الموارد — أقصر وأأمن
- يمكنك استخدام var داخل try-with-resources لتقليل التكرار
⚠️ أخطاء شائعة
- nxing موارد غير AutoCloseable في try-with-resources — خطأ ترجمة
- nxing finalize() بدلاً من try-with-resources — finalize() مهجورة منذ Java 9
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.