ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 5 · 2లో పాఠం 2కోర్సులో 10/14~12 min
మాడ్యూల్ పాఠాలు (2/2)

వనరులతో ప్రయత్నించండి

Java యొక్క పాత సంస్కరణల్లో, స్పష్టమైన ముగింపు అవసరమయ్యే వనరులను నిర్వహించడానికి (ఫైళ్లు, డేటాబేస్ కనెక్షన్‌లు లేదా నెట్‌వర్క్ స్ట్రీమ్‌లు వంటివి) అవి మూసివేయబడ్డాయని నిర్ధారించుకోవడానికి తప్పనిసరి finally బ్లాక్ అవసరం. ఇది వెర్బోస్ మరియు లీక్-ప్రోన్ కోడ్‌కు దారితీసింది.

Java 7 AutoCloseable ఇంటర్‌ఫేస్‌ను అమలు చేస్తే, try బ్లాక్‌లో ప్రకటించబడిన అన్ని వనరులను స్వయంచాలకంగా మూసివేయడానికి హామీ ఇచ్చే ** వనరులతో ప్రయత్నించండి** స్టేట్‌మెంట్‌ను పరిచయం చేసింది.

సింటాక్స్

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లోడ్ అవుతోంది...

మార్గంలో ఫైల్‌రీడర్‌ను చుట్టే బఫర్డ్‌రీడర్‌ను ప్రారంభించేందుకు వనరులతో ప్రయత్నించండి స్టేట్‌మెంట్‌ని ఉపయోగించి రీడ్‌ఫైల్ పద్ధతిని పూర్తి చేయండి. క్యాచ్ బ్లాక్‌లో, IOExceptionను అడ్డగించి, 'ఎర్రర్ రీడింగ్ ఫైల్' అని ప్రింట్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

`ప్రయత్నించండి` తర్వాత కుండలీకరణాల్లో `బఫర్డ్ రీడర్`ని ప్రకటించి, `IOException` హ్యాండ్లింగ్‌ని అమలు చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#java.m5.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

కస్టమ్ రిసోర్స్ కస్టమ్ రిసోర్స్‌ని ప్రయత్నించండి-విత్-రిసోర్సెస్ బ్లాక్‌లో ఇన్‌స్టాంటియేట్ చేయండి, దానిపై doWork() పద్ధతిని అమలు చేయండి మరియు 'ఎర్రర్'ని ప్రింట్ చేయడం ద్వారా మినహాయింపును నిర్వహించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

`ప్రయత్నించండి (CustomResource res = కొత్త CustomResource())`ని ఉపయోగించండి మరియు దాని లోపల `res.doWork();`కి కాల్ చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#java.m5.l2.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

మొదటి వనరు మరియు రెండవ వనరులు రెండింటినీ ఒకే ప్రయత్నంతో-వనరుల నిర్మాణంలో ప్రకటించండి. 'ఎర్రర్' ప్రింటింగ్ ద్వారా మినహాయింపును నిర్వహించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సెమికోలన్ `;`ని ఉపయోగించి `ప్రయత్నించండి` కుండలీకరణాల్లోని రెండు వనరుల డిక్లరేషన్‌ను వేరు చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది