మాడ్యూల్ పాఠాలు (2/2)
వనరులతో ప్రయత్నించండి
Java యొక్క పాత సంస్కరణల్లో, స్పష్టమైన ముగింపు అవసరమయ్యే వనరులను నిర్వహించడానికి (ఫైళ్లు, డేటాబేస్ కనెక్షన్లు లేదా నెట్వర్క్ స్ట్రీమ్లు వంటివి) అవి మూసివేయబడ్డాయని నిర్ధారించుకోవడానికి తప్పనిసరి finally బ్లాక్ అవసరం. ఇది వెర్బోస్ మరియు లీక్-ప్రోన్ కోడ్కు దారితీసింది.
Java 7 AutoCloseable ఇంటర్ఫేస్ను అమలు చేస్తే, try బ్లాక్లో ప్రకటించబడిన అన్ని వనరులను స్వయంచాలకంగా మూసివేయడానికి హామీ ఇచ్చే ** వనరులతో ప్రయత్నించండి** స్టేట్మెంట్ను పరిచయం చేసింది.
సింటాక్స్
try కీవర్డ్ తర్వాత వెంటనే కుండలీకరణాల లోపల వనరులు ప్రకటించబడతాయి మరియు ప్రారంభించబడతాయి.
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 బ్లాక్లో బహుళ వనరులను తక్షణం చేయవచ్చు, వాటిని సెమికోలన్ ;తో వేరు చేయవచ్చు. వనరులు వాటి డిక్లరేషన్ యొక్క రివర్స్ ఆర్డర్లో మూసివేయబడతాయి.
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() పద్ధతిని భర్తీ చేసినంత వరకు ఉపయోగించవచ్చు.
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!");
}
}మీరే ప్రయత్నించండి
మార్గంలో ఫైల్రీడర్ను చుట్టే బఫర్డ్రీడర్ను ప్రారంభించేందుకు వనరులతో ప్రయత్నించండి స్టేట్మెంట్ని ఉపయోగించి రీడ్ఫైల్ పద్ధతిని పూర్తి చేయండి. క్యాచ్ బ్లాక్లో, IOExceptionను అడ్డగించి, 'ఎర్రర్ రీడింగ్ ఫైల్' అని ప్రింట్ చేయండి.
సూచనను చూపించు
`ప్రయత్నించండి` తర్వాత కుండలీకరణాల్లో `బఫర్డ్ రీడర్`ని ప్రకటించి, `IOException` హ్యాండ్లింగ్ని అమలు చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
కస్టమ్ రిసోర్స్ కస్టమ్ రిసోర్స్ని ప్రయత్నించండి-విత్-రిసోర్సెస్ బ్లాక్లో ఇన్స్టాంటియేట్ చేయండి, దానిపై doWork() పద్ధతిని అమలు చేయండి మరియు 'ఎర్రర్'ని ప్రింట్ చేయడం ద్వారా మినహాయింపును నిర్వహించండి.
సూచనను చూపించు
`ప్రయత్నించండి (CustomResource res = కొత్త CustomResource())`ని ఉపయోగించండి మరియు దాని లోపల `res.doWork();`కి కాల్ చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
మొదటి వనరు మరియు రెండవ వనరులు రెండింటినీ ఒకే ప్రయత్నంతో-వనరుల నిర్మాణంలో ప్రకటించండి. 'ఎర్రర్' ప్రింటింగ్ ద్వారా మినహాయింపును నిర్వహించండి.
సూచనను చూపించు
సెమికోలన్ `;`ని ఉపయోగించి `ప్రయత్నించండి` కుండలీకరణాల్లోని రెండు వనరుల డిక్లరేషన్ను వేరు చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది