مرکزی مواد پر جائیں
ماڈیول 5 · سبق 2 از 2کورس میں 10/14~12 min
ماڈیول اسباق (2/2)

وسائل کے ساتھ کوشش کریں۔

جاوا کے پرانے ورژنز میں، وسائل کو منظم کرنے کے لیے جن کو واضح طور پر بند کرنے کی ضرورت ہوتی ہے (جیسے فائلیں، ڈیٹا بیس کنکشن، یا نیٹ ورک اسٹریمز) کو ایک لازمی finally بلاک کی ضرورت ہوتی ہے تاکہ یہ یقینی بنایا جا سکے کہ وہ بند ہیں۔ اس سے وربوز اور لیک ہونے والے کوڈ کی وجہ بنی۔

Java 7 نے وسائل کے ساتھ کوشش کریں بیان متعارف کرایا، جو try بلاک کے اندر اعلان کردہ تمام وسائل کے خودکار بندش کی ضمانت دیتا ہے، بشرطیکہ وہ AutoCloseable انٹرفیس کو نافذ کریں۔

نحو

وسائل کو try کلیدی لفظ کے فوراً بعد قوسین کے اندر اعلان اور شروع کیا جاتا ہے۔

Java
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    String line = br.readLine();
    System.out.println(line);
} catch (IOException e) {
    System.out.println("I/O Error: " + e.getMessage());
}
// br is closed automatically here, even if an exception occurs

متعدد وسائل کا اعلان کرنا

آپ ایک ہی try بلاک کے اندر متعدد وسائل کو انسٹیٹیوٹ کر سکتے ہیں، انہیں ایک سیمیکولن ; سے الگ کر کے۔ وسائل کو ان کے اعلان کے الٹ ترتیب میں بند کر دیا جائے گا۔

Java
try (
    FileReader fr = new FileReader("input.txt");
    FileWriter fw = new FileWriter("output.txt")
) {
    // Use resources
} catch (IOException e) {
    System.out.println("Error: " + e.getMessage());
}

اپنی مرضی کے وسائل کی تخلیق

ایک حسب ضرورت وسیلہ try-with-resources بلاک میں استعمال کیا جا سکتا ہے جب تک کہ یہ java.lang.AutoCloseable کو نافذ کرتا ہے اور close() طریقہ کو اوور رائیڈ کرتا ہے۔

Java
public class DatabaseConnection implements AutoCloseable {
    public void query(String sql) {
        System.out.println("Running query: " + sql);
    }

    @Override
    public void close() {
        System.out.println("Connection closed!");
    }
}

خود ہی آزمائیں۔

ورزش#java.m5.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

فائل ریڈر کو راستے پر لپیٹتے ہوئے بفرڈ ریڈر کو شروع کرنے کے لیے وسائل کے ساتھ کوشش کرنے کے بیان کا استعمال کرتے ہوئے readFile طریقہ کو مکمل کریں۔ کیچ بلاک میں، IOException کو روکیں اور 'Error read file' پرنٹ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

'Try' کے فوراً بعد قوسین میں 'BufferedReader' کا اعلان کریں، اور 'IOException' ہینڈلنگ کو لاگو کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m5.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

وسائل کے ساتھ کوشش کرنے والے بلاک کے اندر حسب ضرورت وسائل CustomResource کو انسٹینٹیٹ کریں، اس پر doWork() طریقہ استعمال کریں، اور 'Error' پرنٹ کرکے Exception کو ہینڈل کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

استعمال کریں `try (CustomResource res = new CustomResource())` اور اس کے اندر `res.doWork();` کال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m5.l2.e3
کوششیں: 0لوڈ ہو رہا ہے…

وسائل کے ساتھ ایک ہی کوشش میں فرسٹ ریسورس اور سیکنڈ ریسورس دونوں کا اعلان کریں۔ 'Error' پرنٹ کرکے استثنا کو ہینڈل کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

سیمی کالون کا استعمال کرتے ہوئے `کوشش` کے قوسین کے اندر دو وسائل کے اعلان کو الگ کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔