முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 5 · பாடம் 2 இன் 2பாடத்திட்டத்தில் 10/14~12 min
தொகுதி பாடங்கள் (2/2)

ஆதாரங்களுடன் முயற்சிக்கவும்

ஜாவாவின் பழைய பதிப்புகளில், வெளிப்படையான மூடல் (கோப்புகள், தரவுத்தள இணைப்புகள் அல்லது நெட்வொர்க் ஸ்ட்ரீம்கள் போன்றவை) தேவைப்படும் ஆதாரங்களை நிர்வகிப்பதற்கு, அவை மூடப்பட்டிருப்பதை உறுதிசெய்ய finally பிளாக் அவசியம். இது வாய்மொழி மற்றும் கசிவு ஏற்படக்கூடிய குறியீட்டிற்கு வழிவகுத்தது.

AutoCloseable இடைமுகத்தை செயல்படுத்தினால், try தொகுதிக்குள் அறிவிக்கப்பட்ட அனைத்து ஆதாரங்களும் தானாக மூடப்படுவதற்கு உத்தரவாதம் அளிக்கும் ஆதாரங்களுடன் முயற்சி அறிக்கையை Java 7 அறிமுகப்படுத்தியது.

தொடரியல்

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 ஐ இடைமறித்து 'Error reading file' என்று அச்சிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`முயற்சி`க்குப் பிறகு அடைப்புக்குறிக்குள் `BufferedReader` ஐ அறிவித்து, `IOException` கையாளுதலைச் செயல்படுத்தவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#java.m5.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

தனிப்பயன் ஆதாரமான CustomResourceஐ ஒரு முயற்சி-வளங்கள் தொகுதிக்குள் உடனுக்குடன் செயல்படுத்தவும், அதில் doWork() முறையை செயல்படுத்தவும், மேலும் 'Error' அச்சிடுவதன் மூலம் விதிவிலக்கைக் கையாளவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`முயற்சி (CustomResource res = புதிய CustomResource())` ஐப் பயன்படுத்தி, அதன் உள்ளே `res.doWork();` ஐ அழைக்கவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#java.m5.l2.e3
முயற்சிகள்: 0ஏற்றுகிறது…

முதல் ஆதாரம் மற்றும் இரண்டாவது ஆதாரம் இரண்டையும் ஒரே முயற்சியுடன் வளங்கள் கட்டமைப்பில் அறிவிக்கவும். 'பிழை' அச்சிடுவதன் மூலம் விதிவிலக்கைக் கையாளவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

அரைப்புள்ளி `;`ஐப் பயன்படுத்தி `முயற்சி` என்பதன் அடைப்புக்குறிக்குள் உள்ள இரண்டு ஆதாரங்களின் அறிவிப்பைப் பிரிக்கவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்