কম্পিউটার টিউটোরিয়াল

জাভাতে একটি try-catch ব্লকের ভিতরে অন্য try-catch ব্লক ডিক্লেয়ার করা যায় কি?


হ্যাঁ, আমরা একটি try-catch ব্লকের ভিতরে অন্য try-catch ব্লক ডিক্লেয়ার করতে পারি, এটাকে নেস্টেড try-catch ব্লক বলা হয়।

নেস্টেড Try-Catch ব্লক

  • যদি একটি ইনার try স্টেটমেন্ট-এর কোনো ম্যাচিং catch স্টেটমেন্ট না থাকে নির্দিষ্ট এক্সেপশনের জন্য, তবে কন্ট্রোল পরবর্তী try স্টেটমেন্টের catch হ্যান্ডলার-এ ট্রান্সফার হয় যা ম্যাচিং catch স্টেটমেন্টের জন্য অপেক্ষা করছে।
  • এটি চলতে থাকে যতক্ষণ না একটি catch স্টেটমেন্ট সাফল্য হয়, অথবা সব নেস্টেড try স্টেটমেন্টগুলো শেষ হয়।
  • যদি কোনো catch স্টেটমেন্ট ম্যাচ না করে, তবে জাভা রান-টাইম সিস্টেম এক্সেপশনটি হ্যান্ডেল করবে।
  • যখন নেস্টেড try ব্লক ব্যবহার করা হয়, ইনার try ব্লক প্রথমে এক্সিকিউট হয়। ইনার try ব্লকে থ্রো হওয়া যেকোনো এক্সেপশন সংশ্লিষ্ট catch ব্লক-এ ক্যাচ হয়। যদি ম্যাচিং catch ব্লক না পাওয়া যায়, তবে আউটার try ব্লক-এর catch ব্লকগুলো চেক করা হয় যতক্ষণ না সকল নেস্টেড try স্টেটমেন্ট শেষ হয়। কোনো ম্যাচিং ব্লক না পেলে জাভা রান-টাইম এনভায়রনমেন্ট এক্সিকিউশন হ্যান্ডেল করে।

সিনট্যাক্স

try { 
    statement 1; 
    statement 2; 
    try { 
        statement 1; 
        statement 2; 
    } 
    catch(Exception e) { 
        // সংশ্লিষ্ট এক্সেপশন ক্যাচ 
    } 
} catch(Exception e) { 
    // সংশ্লিষ্ট এক্সেপশন ক্যাচ 
} 
.............

উদাহরণ

import java.io.*; 
public class NestedTryCatchTest { 
    public static void main (String args[]) throws IOException { 
        int n = 10, result = 0; 
        try { // আউটার try ব্লক 
            FileInputStream fis = null; 
            fis = new FileInputStream (new File (args[0])); 
            try { // ইনার try ব্লক 
                result = n/0; 
                System.out.println("The result is"+result); 
            } 
            catch(ArithmeticException e) { // ইনার catch ব্লক 
                System.out.println("Division by Zero"); 
            } 
        } 
        catch (FileNotFoundException e) { // আউটার catch ব্লক 
            System.out.println("File was not found"); 
        } 
        catch(ArrayIndexOutOfBoundsException e) { // আউটার catch ব্লক 
            System.out.println("Array Index Out Of Bounds Exception occured "); 
        } 
        catch(Exception e) { // আউটার catch ব্লক 
            System.out.println("Exception occured"+e); 
        } 
    } 
}

আউটপুট

Array Index Out Of Bounds Exception occured
  1. জাভাতে ক্যাচ বা ফাইনালি ব্লকে রিটার্ন স্টেটমেন্ট ব্যবহার করা যায় কি?

  2. জাভাতে এক ট্রাই ব্লকে একাধিক ক্যাচ ব্লক ব্যবহার করা যায় কি?

  3. জাভাতে ক্যাচ ব্লক ছাড়া ট্রাই ব্লক ব্যবহার করা যায় কি?

  4. জাভাতে মেইন মেথড প্রাইভেট ঘোষণা করা যায় কি?