📘 Module 8: Exception Handling in Java
👉 try-with-resources
जो file handling, database connection, socket जैसे resource-based कामों में बहुत ज़रूरी होता है।
🔷 1. Problem in Traditional try-catch
जब हम किसी resource (जैसे: file, DB connection) को use करते हैं, तो हमें उसे manually close करना पड़ता है:
🔴 Traditional Approach (before Java 7):
FileReader fr = null;
try {
fr = new FileReader("data.txt");
// read file
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
try {
if (fr != null) fr.close(); // manually close
} catch (IOException e) {
System.out.println("Error closing file");
}
}
❌ समस्या: अगर हम
close()करना भूल जाएँ, तो memory leak, file lock जैसी परेशानियाँ हो सकती हैं।
✅ 2. What is try-with-resources?
📌 Definition:
Java 7 से आया feature जिसमें हम resource को try-block के अंदर declare करते हैं, और Java उसे automatically close कर देता है, चाहे exception आए या ना आए।
🔹 Syntax:
try (ResourceType resource = new ResourceType()) {
// use resource
} catch (Exception e) {
// handle exception
}
✅ 3. Example with FileReader & BufferedReader
import java.io.*;
public class TryWithResourceDemo {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
// No need to write br.close()
}
}
➡️ यहाँ BufferedReader को automatically close कर दिया जाएगा, बिना manually close() लिखे।
📌 Condition:
जो भी class
try-with-resourcesमें use करनी है, वोAutoCloseableinterface को implement करनी चाहिए।
Built-in AutoCloseable classes:
| Class Name | Use |
|---|---|
FileReader | File reading |
BufferedReader | Efficient file read |
FileInputStream | Binary file input |
Scanner | Input reading |
Connection (JDBC) | Database connection |
🧠 Benefits of try-with-resources
| Benefit | Explanation |
|---|---|
| ✅ Automatic close | resource को खुद बंद करता है |
| ✅ No finally needed | finally block लिखने की ज़रूरत नहीं |
| ✅ Less error-prone | human error से बचाता है |
| ✅ Clean code | short और readable code |
🔍 Multiple Resources Example:
try (
FileReader fr = new FileReader("file.txt");
BufferedReader br = new BufferedReader(fr)
) {
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
❗ Java Version Notes:
| Java Version | Feature |
|---|---|
| Java 7 | try-with-resources introduced |
| Java 9 | Effectively final resource को बाहर declare करके भी use कर सकते हैं |
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try (br) {
System.out.println(br.readLine());
}
📘 Summary Table
| Feature | Description |
|---|---|
| Introduced in | Java 7 |
| Closes Resource | Automatically |
| Works With | Classes implementing AutoCloseable |
| Replaces | finally block for closing |
| Benefits | Less error, clean code, memory safety |
🧪 Practice Task:
- File से data पढ़िए
try-with-resourcesसे - Scanner से user input लीजिए और उसे भी auto-close कराइए
- JDBC connection से MySQL DB read करके auto-close कराइए (advance)
Comments