"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هو Try-With-Resource في Java وكيف يختلف عن Try-Catch-Finally؟

ما هو Try-With-Resource في Java وكيف يختلف عن Try-Catch-Finally؟

تم النشر بتاريخ 2024-11-02
تصفح:757

What is Try-With-Resource in Java and How is it Different from Try-Catch-Finally?

1. فهم محاولة الالتقاط أخيرًا

تعد الكتلة try-catch-finally طريقة تقليدية للتعامل مع الاستثناءات وإدارة الموارد مثل مقابض الملفات واتصالات قاعدة البيانات وما إلى ذلك.

1.1 هيكل محاولة الالتقاط أخيرًا

تتكون كتلة محاولة الالتقاط أخيرًا من ثلاثة أجزاء:

  • جرب الحظر : يتم وضع الكود الذي قد يؤدي إلى استثناء هنا.
  • catch block : يلتقط ويعالج الاستثناءات التي تم طرحها بواسطة كتلة المحاولة.
  • أخيرًا الحظر : يتم تنفيذه دائمًا، بغض النظر عما إذا تم طرح استثناء، ويستخدم عادةً لتنظيف الموارد.

1.2 مثال على محاولة الالتقاط أخيرًا

FileReader reader = null;
try {
    reader = new FileReader("example.txt");
    // Perform file operations
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (reader != null) {
            reader.close();
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

1.3 حدود محاولة الالتقاط أخيرًا

تتطلب الكتلة التقليدية try-catch-finally معالجة يدوية لتنظيف الموارد، مما قد يؤدي إلى تعليمات برمجية مطولة وأخطاء محتملة، مثل نسيان إغلاق المورد.

1.4 متى يتم استخدام Try-Catch-Finally

استخدم try-catch-finally عندما تحتاج إلى إدارة الموارد غير القابلة للإغلاق التلقائي أو عندما يكون التوافق مع إصدارات Java الأقدم مطلوبًا.

2. تقديم تجربة مع الموارد

تم تقديم بيان try-with-resource في Java 7، وهو يبسط إدارة الموارد عن طريق إغلاق الموارد التي تنفذ واجهة AutoCloseable تلقائيًا.

2.1 كيف تعمل تجربة الموارد

تضمن عبارة try-with-resource إغلاق كل مورد في نهاية العبارة، مما يقلل من التعليمات البرمجية المعيارية ومخاطر تسرب الموارد.

2.2 مثال للتجربة مع الموارد

try (FileReader reader = new FileReader("example.txt")) {
    // Perform file operations
} catch (IOException e) {
    e.printStackTrace();
}

2.3 مزايا التجربة مع الموارد

  • إدارة الموارد تلقائيًا: إغلاق الموارد تلقائيًا، مما يجعل التعليمات البرمجية أكثر نظافة وأقل عرضة للأخطاء.
  • نموذج مخفض: لا حاجة للحظر النهائي الصريح لإغلاق الموارد.
  • قابلية قراءة أفضل: يبسط الكود، مما يسهل صيانته وفهمه.

2.4 الاختلافات بين المحاولة باستخدام الموارد ومحاولة الالتقاط أخيرًا

  • إدارة الموارد : try-with-resource يقوم بأتمتة عملية تنظيف الموارد، في حين أن try-catch-finally يتطلب التنظيف اليدوي
  • معالجة الأخطاء : كلاهما يتعامل مع الاستثناءات، ولكن المحاولة مع الموارد تقلل من فرصة تسرب الموارد بسبب عدم تنظيفها.
  • إمكانية قراءة التعليمات البرمجية: تؤدي التجربة مع الموارد إلى تعليمات برمجية أكثر إيجازًا وقابلية للقراءة.

3. العرض التوضيحي: تجربة استخدام الموارد أثناء العمل

دعونا نرى عرضًا توضيحيًا حيث نقارن try-catch-finally وtry-with-resource باستخدام عملية قراءة ملف بسيطة.

3.1 الرمز التجريبي: حاول الالتقاط أخيرًا

FileReader reader = null;
try {
    reader = new FileReader("example.txt");
    BufferedReader bufferedReader = new BufferedReader(reader);
    System.out.println(bufferedReader.readLine());
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (reader != null) {
            reader.close();
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

3.2 الرمز التجريبي: جرب مع الموارد

try (FileReader reader = new FileReader("example.txt");
     BufferedReader bufferedReader = new BufferedReader(reader)) {
    System.out.println(bufferedReader.readLine());
} catch (IOException e) {
    e.printStackTrace();
}

3.3 النتائج التجريبية

  • Try-Catch-Finally : يتطلب إدارة صريحة للموارد، والتي يمكن أن تكون عرضة للأخطاء إذا لم يتم التعامل معها بشكل صحيح.
  • Try-With-Resource : يدير عملية تنظيف الموارد تلقائيًا، مما يؤدي إلى كود أكثر نظافة وأمانًا.

4. الاستنتاج

في الختام، في حين أن كلاً من try-catch-finally وtry-with-resource هما أدوات أساسية لمعالجة الاستثناءات وإدارة الموارد في Java، try-with- يقدم المورد طريقة أكثر بساطة ومقاومة للأخطاء. فهو يتعامل تلقائيًا مع إغلاق الموارد، مما ينتج عنه تعليمات برمجية أكثر وضوحًا وأكثر قابلية للصيانة. عند العمل مع الموارد التي تنفذ واجهة AutoCloseable، تفضل try-with-resource لبساطتها وموثوقيتها.

لا تتردد في التعليق أدناه إذا كان لديك أي أسئلة أو بحاجة إلى مزيد من التوضيح!

اقرأ المزيد من المشاركات على : ما هو Try-With-Resource في Java وكيف يختلف عن Try-Catch-Finally؟

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/anh_trntun_4732cf3d299/what-is-try-with-resource-in-java-and-how-is-it-different-from-try-catch-finally-lf5؟ 1. في حالة وجود أي انتهاك، يرجى التواصل مع [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3