Java try/catch/finally দিয়ে ত্রুটি পরিচালনা করে, এবং অনন্যভাবে চেক করা ব্যতিক্রম (অবশ্যই ঘোষণা বা পরিচালনা করতে হবে) থেকে অচেক করা ব্যতিক্রম (রানটাইম, প্রয়োগ করা হয় না) কে আলাদা করে। এই পার্থক্য বোঝা Java ত্রুটি পরিচালনার কেন্দ্রবিন্দু।
Java try/catch/finally দিয়ে ত্রুটি পরিচালনা করে, এবং অনন্যভাবে চেক করা ব্যতিক্রম (অবশ্যই ঘোষণা বা পরিচালনা করতে হবে) থেকে অচেক করা ব্যতিক্রম (রানটাইম, প্রয়োগ করা হয় না) কে আলাদা করে। এই পার্থক্য বোঝা Java ত্রুটি পরিচালনার কেন্দ্রবিন্দু।
try {
FileReader f = new FileReader("file.txt"); // may throw IOException
// ... use it ...
} catch (FileNotFoundException e) {
System.out.println("not found: " + e.getMessage()); // specific first
} catch (IOException e) {
System.out.println("io error"); // broader after
} finally {
System.out.println("always runs — cleanup"); // runs no matter what
}
finally সর্বদা কার্যকর হয় (পরিষ্কার), এমনকি যদি একটি ব্যতিক্রম নিক্ষেপ করা হয় বা একটি return ঘটে।
Throwable
├── Error — serious JVM problems (OutOfMemoryError) — don't catch
└── Exception
├── RuntimeException → UNCHECKED (not enforced by the compiler)
│ NullPointerException, IllegalArgumentException, IndexOutOfBounds...
└── (other Exceptions) → CHECKED (compiler enforces handling)
IOException, SQLException...
// MUST either catch it or declare `throws` — the compiler won't let you ignore it
public void readFile() throws IOException { // declare it
Files.readAllLines(Paths.get("file.txt")); // throws checked IOException
}
চেক করা ব্যতিক্রম (IOException, SQLException) পুনরুদ্ধারযোগ্য, প্রত্যাশিত শর্ত প্রতিনিধিত্ব করে (একটি ফাইল অনুপস্থিত, একটি নেটওয়ার্ক ব্যর্থতা)। কম্পাইলার আপনাকে তাদের পরিচালনা বা ঘোষণা করতে বাধ্য করে — বাহ্যিক-ব্যর্থতা পরিচালনা স্পষ্ট করে তোলে।
// NOT required to declare or catch — usually indicate PROGRAMMING BUGS
String s = null;
s.length(); // NullPointerException (unchecked)
int x = arr[10]; // ArrayIndexOutOfBoundsException (unchecked)
Integer.parseInt("abc"); // NumberFormatException (unchecked)
অচেক করা (RuntimeException সাবক্লাস) সাধারণত প্রোগ্রামিং ত্রুটি সংকেত করে — আপনি বাগটি ঠিক করেন তার চেয়ে সর্বত্র এটি ধরুন না। কম্পাইলার পরিচালনা আবশ্যক করে না।
// resources implementing AutoCloseable are closed automatically
try (FileReader f = new FileReader("file.txt")) {
// use f
} // f.close() called automatically, even on exception — no finally needed
✓ Catch specific exceptions, not bare Exception
✓ Use try-with-resources for files/connections (auto-close)
✓ Don't swallow exceptions silently (empty catch blocks)
✓ Throw meaningful exceptions; include context in messages
✓ Custom exceptions extend Exception (checked) or RuntimeException (unchecked)
শক্তিশালী ত্রুটি পরিচালনা অত্যাবশ্যক, এবং Java এর চেক করা/অচেক করা পার্থক্য একটি সংজ্ঞায়িত (এবং বিতর্কিত) বৈশিষ্ট্য যা গভীরভাবে বোঝার যোগ্য।
চেক করা ব্যতিক্রম প্রত্যাশিত বাহ্যিক ব্যর্থতার স্পষ্ট পরিচালনা বাধ্য করে (I/O, DB) — নির্ভরযোগ্যতা প্রচার করে কিন্তু কখনও কখনও জটিল হিসাবে সমালোচিত; অচেক করা ব্যতিক্রম বাগ প্রতিনিধিত্ব করে রুটিনভাবে ধরার পরিবর্তে ঠিক করতে হবে।
শ্রেণিবিন্যাস জানা, প্রতিটি ধরনের প্রয়োগ, try/catch/finally শব্দার্থবিদ্যা, এবং স্বয়ংক্রিয় পরিষ্কারের জন্য আধুনিক try-with-resources সঠিক, নির্ভরযোগ্য Java লেখার ভিত্তি — এবং আপনার নিজের ব্যতিক্রম যথাযথভাবে ডিজাইন করার জন্য।
এই পার্থক্য Java APIs কীভাবে ডিজাইন করা হয় তা গঠন করে এবং একটি ঘন ঘন সাক্ষাৎকার এবং কোড-পর্যালোচনা বিষয়।