Exception Handling সম্পর্কিত প্রশ্নাবলী

জাভা ইন্টারভিউ প্রশ্ন (Java Interview Questions) - Java Technologies

437

Java Exception Handling একটি গুরুত্বপূর্ণ ধারণা যা Java প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এটি সফটওয়্যার ডেভেলপমেন্টে ত্রুটির (error) জন্য একটি স্থিতিশীল ও কার্যকরী পদ্ধতি সরবরাহ করে। এই প্রক্রিয়ায়, আপনি ত্রুটির প্রকার অনুযায়ী পৃথকভাবে সেগুলিকে হ্যান্ডেল করতে পারেন, যাতে প্রোগ্রামটি সঠিকভাবে চলতে পারে এবং তার কার্যক্ষমতা বজায় থাকে।

নিচে Exception Handling সম্পর্কিত কিছু সাধারণ Java Interview Questions দেওয়া হয়েছে, যা প্রার্থীদের প্রস্তুতির জন্য সহায়ক হতে পারে।


1. Exception Handling কী?

Answer: Exception handling হল এমন একটি প্রক্রিয়া যার মাধ্যমে প্রোগ্রাম চলাকালীন সময়ে যদি কোনো ত্রুটি (exception) ঘটে, তবে এটি সঠিকভাবে হ্যান্ডেল করা যায় এবং প্রোগ্রাম ক্র্যাশ না হয়ে চলতে থাকে।

  • Exception: কোনো ত্রুটি বা পরিস্থিতি যা প্রোগ্রামের স্বাভাবিক প্রবাহকে বাধাগ্রস্ত করে।
  • Exception Handling: try, catch, finally ব্লক ব্যবহার করে ত্রুটির হ্যান্ডলিং প্রক্রিয়া।

2. Java তে Exception কি?

Answer: Exception হল একটি অবস্থা যা প্রোগ্রামের চলাচলকে ব্যাহত করে। এটি Throwable ক্লাস থেকে উত্তরাধিকারী (inherit) হয়। Exception দুটি ভাগে বিভক্ত:

  1. Checked Exception: যেগুলি কম্পাইল টাইমে চেক করা হয়, যেমন IOException, SQLException
  2. Unchecked Exception: যেগুলি রান টাইমে ঘটে, যেমন NullPointerException, ArrayIndexOutOfBoundsException

3. Java তে Checked এবং Unchecked Exception এর মধ্যে পার্থক্য কী?

Answer:

  • Checked Exception:
    • এটি compilation time এ চেক করা হয়।
    • প্রোগ্রামারকে এগুলি হ্যান্ডেল করার জন্য try-catch ব্লক ব্যবহার করতে হয় বা throws কীওয়ার্ড ব্যবহার করতে হয়।
    • উদাহরণ: IOException, SQLException
  • Unchecked Exception:
    • এটি runtime-এ ঘটে।
    • এগুলি প্রোগ্রাম চলাকালীন সময়ে ঘটে এবং প্রোগ্রামারকে এগুলি হ্যান্ডেল করতে বাধ্য করা হয় না।
    • উদাহরণ: NullPointerException, ArrayIndexOutOfBoundsException

4. try, catch, এবং finally ব্লক কী?

Answer:

  • try block: এখানে সেই কোড লিখা হয় যা exception তৈরি করতে পারে।
  • catch block: এখানে exception হ্যান্ডেল করা হয় যদি try ব্লকে কোনো exception ঘটে।
  • finally block: এটি optional একটি ব্লক যা exception ঘটুক বা না ঘটুক, সর্বশেষে execute হয়। এটি resources বন্ধ করা বা ক্লিন-আপ কার্যাবলী করার জন্য ব্যবহার করা হয়।

Example:

try {
    // Code that might throw an exception
    int result = 10 / 0;  // Division by zero exception
} catch (ArithmeticException e) {
    // Handle ArithmeticException
    System.out.println("Error: " + e.getMessage());
} finally {
    // Always executes
    System.out.println("Finally block executed");
}

5. Java তে Exception এর types কী কী?

Answer: Java তে দুটি ধরনের exception আছে:

  1. Checked Exception: যা কম্পাইল টাইমে চেক করা হয় (e.g., IOException, SQLException)।
  2. Unchecked Exception: যা রানটাইমে ঘটে (e.g., NullPointerException, ArithmeticException)।

এছাড়া Errorও রয়েছে যা Throwable ক্লাসের অধীনে আসে, তবে তা সাধারণত exception নয় এবং ব্যবহারকারী তা হ্যান্ডেল করে না।


6. throw এবং throws এর মধ্যে পার্থক্য কী?

Answer:

  • throw: এটি একটি কিওয়ার্ড যা কোনো নির্দিষ্ট exception ছুঁড়ে ফেলার জন্য ব্যবহৃত হয়। এটি মেথডের মধ্যে exception ঘটানোর জন্য ব্যবহার করা হয়।

    Example:

    throw new ArithmeticException("Division by zero");
    
  • throws: এটি মেথড সিগনেচারে ব্যবহৃত হয় এবং এটি checked exceptionsকে ডিফাইন করে যা মেথডটি ফেলে দেবে। এটি কোনো exception প্রেরণ করবে না, বরং যে মেথড কল করছে তার দায়িত্বে ফেলবে।

    Example:

    public void readFile() throws IOException {
        // Code that might throw IOException
    }
    

7. NullPointerException কী এবং কেন হয়?

Answer: NullPointerException তখন ঘটে যখন আপনি একটি null অবজেক্ট রেফারেন্সের মাধ্যমে কোন মেথড কল বা ফিল্ড অ্যাক্সেস করার চেষ্টা করেন। এটি একটি runtime exception

Example:

String str = null;
int length = str.length();  // This will throw NullPointerException

8. finally ব্লক কি কখনো execute না হতে পারে?

Answer: finally ব্লক সাধারণত সব সময় execute হয়, তবে এটি কিছু ক্ষেত্রে execute না হতে পারে:

  • যদি System.exit() কল করা হয়।
  • যদি JVM crash করে।

9. Exception Propagation কি?

Answer: Exception propagation হল যখন একটি exception একটি মেথড থেকে অন্য মেথডে propagate হয়। যদি একটি মেথডে exception ঘটে এবং এটি হ্যান্ডেল না করা হয়, তাহলে exceptionটি calling method বা calling stack এ propagate হয়ে যাবে। যদি exceptionটি পুরো স্ট্যাক পেরিয়ে যায়, তাহলে এটি runtime তে একটি uncaught exception হিসেবে রিপোর্ট হবে।


10. Multiple Catch Blocks ব্যবহার করা কি সম্ভব?

Answer: হ্যাঁ, Java 7 এবং পরবর্তী সংস্করণে multiple catch blocks একসাথে ব্যবহার করা সম্ভব, যেখানে একাধিক exception একসঙ্গে ক্যাচ করা হয়।

Example:

try {
    // Code that may throw multiple exceptions
    int result = 10 / 0;
    String str = null;
    int length = str.length();
} catch (ArithmeticException | NullPointerException e) {
    System.out.println("Exception: " + e.getMessage());
}

11. Custom Exception কী এবং কিভাবে তৈরি করা যায়?

Answer: Custom Exception হল এমন একটি exception যা আপনি নিজেই তৈরি করেন, যা আপনার প্রোগ্রামের জন্য একটি কাস্টম ত্রুটি পরিস্থিতি প্রকাশ করতে সাহায্য করে।

Example:

class InvalidAgeException extends Exception {
    public InvalidAgeException(String message) {
        super(message);
    }
}

public class Main {
    public static void validateAge(int age) throws InvalidAgeException {
        if (age < 18) {
            throw new InvalidAgeException("Age must be at least 18");
        }
    }

    public static void main(String[] args) {
        try {
            validateAge(15);
        } catch (InvalidAgeException e) {
            System.out.println(e.getMessage());
        }
    }
}

12. What is the purpose of getMessage() and printStackTrace() methods in exceptions?

Answer:

  • getMessage(): এটি exception এর বিস্তারিত বার্তা প্রদান করে, যেমন exception ঘটার কারণ।
  • printStackTrace(): এটি exception ঘটার সময় স্ট্যাক ট্রেসের সমস্ত তথ্য প্রিন্ট করে, যাতে exception কোথায় এবং কিভাবে ঘটেছে তা ট্র্যাক করা যায়।

Example:

try {
    throw new Exception("Something went wrong");
} catch (Exception e) {
    System.out.println(e.getMessage()); // Output: Something went wrong
    e.printStackTrace();  // Prints the stack trace of the exception
}

Java Exception Handling সম্পর্কে গভীর ধারণা থাকা খুবই গুরুত্বপূর্ণ, কারণ এটি কোডের স্থিতিশীলতা এবং কার্যক্ষমতা উন্নত করতে সহায়তা করে। উপরোক্ত প্রশ্নগুলি Java Exception Handling এর মৌলিক বিষয়গুলি কভার করে এবং এগুলি সাধারণত Java ইন্টারভিউতে ব্যবহৃত হয়।

Content added By

Exception Handling হল একটি প্রক্রিয়া যা Java প্রোগ্রামিং ভাষায় ত্রুটির (error) পরিস্থিতি সমাধান করতে ব্যবহৃত হয়। যখন কোনো প্রোগ্রামে কোনো অপ্রত্যাশিত পরিস্থিতি ঘটে, তখন একটি exception উত্পন্ন হয় এবং এটি প্রোগ্রামের স্বাভাবিক প্রবাহকে বিঘ্নিত করে। Exception Handling এর মাধ্যমে এই পরিস্থিতি হ্যান্ডেল করা যায় এবং প্রোগ্রাম চলতে থাকে। এটি কোডের স্থিতিশীলতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করে।

Java তে Exception Handling এর প্রক্রিয়া মূলত ৫টি প্রধান অংশে বিভক্ত:

1. try Block

  • try block এমন একটি ব্লক যেখানে কোড লেখা হয়, যেটি ত্রুটি উত্পন্ন করতে পারে। যদি try block-এর মধ্যে কোনো exception ঘটে, তখন সিস্টেম ত্রুটির ধরন সনাক্ত করে তা catch block-এ পাঠায়।
try {
    // Code that might throw an exception
    int result = 10 / 0;  // ArithmeticException
} 

2. catch Block

  • catch block ত্রুটিটি try block থেকে ধরতে ব্যবহৃত হয়। যখন try block তে কোনো exception ঘটে, তখন তা catch block-এ পাঠানো হয় এবং সেখানে exception এর ধরন অনুযায়ী কিভাবে সেটি হ্যান্ডেল করা হবে তা উল্লেখ করা হয়।
catch (ArithmeticException e) {
    // Handling exception
    System.out.println("Error: " + e.getMessage());
}
  • এখানে, ArithmeticException একটি নির্দিষ্ট exception টাইপ যা try ব্লকে ঘটে।

3. finally Block

  • finally block এমন একটি ব্লক যা try-catch ব্লক শেষ হবার পর, ত্রুটি ঘটুক বা না ঘটুক, সর্বদা 실행 হয়। এটি সাধারণত এমন কাজের জন্য ব্যবহৃত হয় যা সম্পন্ন করা প্রয়োজন যেমন resource release, closing files, database connections ইত্যাদি।
finally {
    // Code that will always be executed after try or catch block
    System.out.println("This block is always executed.");
}
  • finally block তখনও চালু হবে যদি catch block এ ত্রুটি হ্যান্ডেল না করা হয়। এটি মূলত পরিষ্কার করার জন্য ব্যবহৃত হয়, যেমন ফাইল বন্ধ করা, ডেটাবেস সংযোগ বন্ধ করা ইত্যাদি।

4. Multiple Catch Blocks

  • একাধিক exception ধরতে try-catch ব্লকে একাধিক catch block ব্যবহার করা যেতে পারে। প্রতিটি catch block একটি নির্দিষ্ট exception টাইপের জন্য থাকে।
try {
    // Code that might throw different exceptions
    int result = 10 / 0;
    String str = null;
    System.out.println(str.length());  // NullPointerException
} catch (ArithmeticException e) {
    System.out.println("ArithmeticException: " + e.getMessage());
} catch (NullPointerException e) {
    System.out.println("NullPointerException: " + e.getMessage());
}
  • এখানে, দুটি ভিন্ন exception হ্যান্ডেল করা হয়েছে: ArithmeticException এবং NullPointerException

5. throw Keyword

  • throw কীওয়ার্ড ব্যবহার করে একটি exception প্রোগ্রামmatically তৈরি করা যায়। এটি exception ছোড়ে এবং তা catch block এ ধরা যায়।
if (age < 18) {
    throw new IllegalArgumentException("Age must be 18 or older.");
}
  • এখানে, IllegalArgumentException একটি exception ছোড়া হয়েছে যদি ব্যবহারকারীর বয়স ১৮ বছরের কম হয়।

6. throws Keyword

  • throws কীওয়ার্ড ব্যবহার করে কোন মেথডে কোন ধরনের exception উত্পন্ন হতে পারে তা নির্দিষ্ট করা হয়। এটি মেথড সিগনেচারে ব্যবহৃত হয় এবং এটি try-catch ব্লকের বাইরে থাকে। সাধারণত এটি checked exceptions এর জন্য ব্যবহৃত হয়।
public void someMethod() throws IOException {
    // Code that might throw IOException
}
  • এখানে, IOException একটি checked exception যা throws কীওয়ার্ড ব্যবহার করে উত্পন্ন হতে পারে।

Exception Handling এর সুবিধা:

  1. Error Isolation:
    • exception handling এর মাধ্যমে কোনো নির্দিষ্ট অংশে ত্রুটি ঘটলে তা পুরো প্রোগ্রামকে প্রভাবিত না করে শুধুমাত্র সংশ্লিষ্ট অংশকে প্রভাবিত করে। এর ফলে প্রোগ্রামটি চলমান থাকে।
  2. Graceful Termination:
    • exception ঘটলে প্রোগ্রামটি সুন্দরভাবে বন্ধ হতে পারে, ত্রুটির বার্তা ব্যবহারকারীকে প্রদান করে এবং পরবর্তীতে কার্যকলাপ করার জন্য নির্দেশনা দিতে পারে।
  3. Maintainability:
    • exception handling কোডের maintainability বাড়ায়, কারণ error ঘটলে তা সহজে ধরা পড়ে এবং এর সমাধান করা যায়।
  4. Separation of Concerns:
    • exception handling দ্বারা কোডের মূল অংশ এবং ত্রুটি হ্যান্ডলিং আলাদা রাখা হয়, ফলে কোডটি আরও পরিষ্কার ও পড়তে সুবিধাজনক হয়।

এছাড়া, Java-তে Exception Types এর মধ্যে দুইটি প্রধান শ্রেণী রয়েছে:

  1. Checked Exceptions:
    • Checked exceptions হল ত্রুটি যা compile-time তে চেক করা হয়। এগুলি সাধারণত সিস্টেমের বাইরে (ফাইল I/O, নেটওয়ার্ক ইত্যাদি) বা runtime তে সিস্টেমের কোনো অবস্থা সম্পর্কে জানায়।
    • উদাহরণ: IOException, SQLException ইত্যাদি।
  2. Unchecked Exceptions:
    • Unchecked exceptions হল ত্রুটি যা runtime তে ঘটে এবং কম্পাইলেশন সময় চেক করা হয় না। এগুলি সাধারণত প্রোগ্রামের লজিকাল ত্রুটি যেমন বিভাজন বা শূন্য রেফারেন্স।
    • উদাহরণ: NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException ইত্যাদি।

সারাংশ:

Java Exception Handling একটি শক্তিশালী প্রক্রিয়া যা ব্যবহারকারীদের ত্রুটি সম্পর্কে জানায় এবং প্রোগ্রামের চলমানতা বজায় রাখে। try-catch, finally, throw, এবং throws কীওয়ার্ডের মাধ্যমে ত্রুটির সঠিক ব্যবস্থাপনা করা হয়। এটি প্রোগ্রামিং উন্নত করতে সাহায্য করে, যাতে সিস্টেমের ক্র্যাশ বা অপ্রত্যাশিত ফলাফল রোধ করা যায়।

Content added By

Checked Exception এবং Unchecked Exception জাভা তে দুটি প্রধান ধরনের Exception। এগুলি exception handling এর জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। নিচে আমরা Checked Exception এবং Unchecked Exception এর মধ্যে পার্থক্য এবং এর বিস্তারিত ব্যাখ্যা দিচ্ছি।

1. Checked Exception:

Checked Exception হলো এমন ধরনের exception যা compile-time এ চেক করা হয়। অর্থাৎ, যখন আপনি একটি checked exception throw করতে চান, তখন try-catch ব্লক ব্যবহার করতে হবে অথবা throws ক্লজ দিয়ে method signature-এ উল্লেখ করতে হবে। যদি আপনি এই exceptions ধরতে না পারেন, তাহলে কম্পাইলার আপনাকে এটি নিয়ে সতর্ক করবে এবং ভুল থাকতে পারে বলে একে handle করার নির্দেশ দেবে।

উদাহরণ:

Checked Exception হলো IOException, SQLException, ClassNotFoundException ইত্যাদি।

import java.io.*;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            // Checked exception: IOException
            FileReader file = new FileReader("non_existing_file.txt");
        } catch (IOException e) {
            System.out.println("IOException occurred: " + e.getMessage());
        }
    }
}

Output:

IOException occurred: non_existing_file.txt (The system cannot find the file specified)

2. Unchecked Exception:

Unchecked Exception হলো এমন ধরনের exception যা runtime এ ঘটে এবং compile-time এ চেক করা হয় না। এই ধরনের exception গুলি সাধারণত RuntimeException ক্লাসের সাবক্লাস হিসেবে থাকে। যদি কোনো unchecked exception ঘটে, তাহলে কম্পাইলার আপনাকে এর জন্য try-catch বা throws ব্যবহার করতে বাধ্য করে না। এর কারণ হল, এগুলি সাধারণত প্রোগ্রামের লজিক্যাল ভুলের কারণে ঘটে এবং প্রোগ্রামারই সেগুলি পূর্বাভাস করতে পারে।

উদাহরণ:

Unchecked Exception হলো ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, IllegalArgumentException ইত্যাদি।

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        try {
            // Unchecked exception: ArithmeticException
            int result = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException occurred: " + e.getMessage());
        }
    }
}

Output:

ArithmeticException occurred: / by zero

Checked এবং Unchecked Exception এর মধ্যে পার্থক্য:

বিষয়Checked ExceptionUnchecked Exception
Definitionএটি এমন একটি exception যা কম্পাইল টাইমে চেক করা হয়।এটি এমন একটি exception যা রানটাইমে ঘটে এবং কম্পাইল টাইমে চেক করা হয় না।
InheritanceException ক্লাসের সাবক্লাস।RuntimeException ক্লাসের সাবক্লাস।
Handlingtry-catch ব্লক ব্যবহার অথবা throws ক্লজ দিয়ে হ্যান্ডল করতে হবে।এটি optional; তবে সম্ভব হলে try-catch ব্যবহার করা হয়।
ExamplesIOException, SQLException, ClassNotFoundExceptionNullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException
When to handle?কম্পাইলারের মাধ্যমে এর জন্য আপনাকে হ্যান্ডল করতে হবে।শুধুমাত্র প্রোগ্রামার যদি প্রয়োজন মনে করেন, তখনই এটি হ্যান্ডল করা হয়।
Occurenceসাধারণত ফাইল সিস্টেম, ডাটাবেস, ইত্যাদির মতো বাহ্যিক ব্যবস্থার কারণে ঘটে।প্রোগ্রামের লজিক্যাল ত্রুটির কারণে ঘটে।

3. কোন Exception কখন ব্যবহার করবেন?

  • Checked Exception: যখন আপনি জানেন যে কিছু এমন ঘটতে পারে যা আপনি পূর্বাভাস করতে পারেন এবং এটি ব্যবহারকারীর জন্য একটি নিয়মিত সমস্যা হতে পারে, তখন checked exception ব্যবহার করুন। যেমন, ফাইল না পাওয়া, ডাটাবেস সংযোগের সমস্যা ইত্যাদি।
  • Unchecked Exception: যখন আপনার কোডে কোন লজিক্যাল ত্রুটি থাকে বা আপনি এমন কোন পরিস্থিতির মধ্যে আছেন যেখানে তা runtime-এ খুবই সম্ভব এবং তা আগেই ধরা যায়, তখন unchecked exception ব্যবহার করা উচিত। যেমন, শূন্য দ্বারা ভাগ করা, null অবজেক্ট রেফারেন্স ব্যবহার করা, ইত্যাদি।
  • Checked Exceptions: কম্পাইল টাইমে চেক করা হয়, এবং এগুলিকে হ্যান্ডল করতে try-catch বা throws ক্লজ ব্যবহার করা হয়।
  • Unchecked Exceptions: রানটাইমে ঘটে, এবং এগুলিকে হ্যান্ডল করার জন্য বাধ্যতামূলক নয়, তবে এগুলি প্রোগ্রামার দ্বারা সঠিকভাবে পরিচালিত হতে পারে।
Content added By

Java তে Exception Handling একটি গুরুত্বপূর্ণ বিষয়। Java এর try, catch, এবং finally ব্লকগুলো দিয়ে এক্সসেপশন হ্যান্ডেল করা হয়। এই তিনটি ব্লক একত্রে ব্যবহার করা হয় যাতে প্রোগ্রামটি এমনকি এক্সসেপশন ঘটলেও নির্বিঘ্নে চলতে পারে এবং সঠিকভাবে সমস্যা সমাধান করা যায়।

1. Try ব্লক:

  • কাজ: try ব্লকটি এমন একটি অংশ যেখানে আপনি কোড লেখেন যা সম্ভাব্যভাবে একটি এক্সসেপশন সৃষ্টি করতে পারে। এই ব্লকটি চালানোর পর যদি কোনো এক্সসেপশন ঘটে, তবে সিস্টেম স্বয়ংক্রিয়ভাবে catch ব্লকে চলে যায়।
  • সিনট্যাক্স:

    try {
        // Code that might throw an exception
    }
    

উদাহরণ:

try {
    int result = 10 / 0; // This will throw ArithmeticException
} 

2. Catch ব্লক:

  • কাজ: catch ব্লকটি try ব্লকের সাথে যুক্ত থাকে এবং try ব্লকে যদি কোনো এক্সসেপশন ঘটে, তবে তা catch ব্লকে ধরা হয়। এখানে আপনি এক্সসেপশনের ধরন অনুযায়ী তা ধরতে এবং যথাযথভাবে সমাধান করতে পারেন।
  • catch ব্লকটি এক বা একাধিক থাকতে পারে, এবং প্রতিটি catch ব্লক এক্সসেপশনের ভিন্ন ধরণের জন্য কাজ করে।
  • সিনট্যাক্স:

    catch (ExceptionType e) {
        // Handle exception
    }
    

উদাহরণ:

try {
    int result = 10 / 0; // This will throw ArithmeticException
} catch (ArithmeticException e) {
    System.out.println("Error: " + e.getMessage()); // Handling ArithmeticException
}

3. Finally ব্লক:

  • কাজ: finally ব্লকটি এমন একটি অংশ যেখানে আপনি এমন কোড লিখতে পারেন যা try বা catch ব্লকগুলির পরে রান হবে, चाहे কোনো এক্সসেপশন ঘটে বা না ঘটে। এটি সাধারণত রিসোর্স বন্ধ করার জন্য ব্যবহৃত হয় (যেমন ফাইল, ডাটাবেস কানেকশন)।
  • finally ব্লকটি যখনই থাকে, তখন তা নির্বিশেষে কাজ করবে, এমনকি যদি কোনো try ব্লক থেকে রিটার্ন স্টেটমেন্ট চলে আসে।
  • সিনট্যাক্স:

    finally {
        // Cleanup code
    }
    

উদাহরণ:

try {
    int result = 10 / 0; // This will throw ArithmeticException
} catch (ArithmeticException e) {
    System.out.println("Error: " + e.getMessage()); // Handling ArithmeticException
} finally {
    System.out.println("This will always execute, regardless of exception.");
}

Try, Catch, Finally এর কাজ কী?

  1. Try ব্লক: কোডের যে অংশে এক্সসেপশন ঘটতে পারে সেখানে try ব্লক ব্যবহার করা হয়।
  2. Catch ব্লক: try ব্লকের মধ্যে যদি কোনো এক্সসেপশন ঘটে, তবে catch ব্লক এক্সসেপশনটি ধরবে এবং সঠিকভাবে তা হ্যান্ডেল করবে।
  3. Finally ব্লক: finally ব্লকটি সিস্টেমের যেকোনো অবস্থা (এক্সসেপশন ঘটুক বা না ঘটুক) থেকে মুক্তি পেতে এবং রিসোর্স ক্লোজ করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে কিছু কোড কখনই বাদ যাবে না, যেমন ডাটাবেস কানেকশন বন্ধ করা বা ফাইল বন্ধ করা।

Additional Examples:

Example 1: Basic Try, Catch, Finally

public class Example {
    public static void main(String[] args) {
        try {
            int result = 10 / 0;  // This will throw ArithmeticException
        } catch (ArithmeticException e) {
            System.out.println("Error: Division by zero is not allowed.");
        } finally {
            System.out.println("This is always executed, whether exception occurs or not.");
        }
    }
}

আউটপুট:

Error: Division by zero is not allowed.
This is always executed, whether exception occurs or not.

Example 2: Try with Resources

import java.io.*;

public class TryWithResources {
    public static void main(String[] args) {
        try (FileReader fr = new FileReader("file.txt")) {
            // Code to read from file
        } catch (IOException e) {
            System.out.println("File not found: " + e.getMessage());
        } finally {
            System.out.println("This is the finally block, executing cleanup actions.");
        }
    }
}
  • এখানে try ব্লকটি FileReader ব্যবহার করছে এবং এর পরে যদি কোনো IOException ঘটে তবে তা catch ব্লক দ্বারা ধরা হবে। finally ব্লকটি রিসোর্সগুলি পরিষ্কার করবে।
  • Try: কোড ব্লক যেখানে এক্সসেপশন ঘটতে পারে।
  • Catch: try ব্লকের এক্সসেপশন ধরা এবং তা হ্যান্ডেল করার জন্য ব্যবহৃত হয়।
  • Finally: এক্সসেপশন ঘটুক বা না ঘটুক, এটি সর্বদা কার্যকর হবে, এবং সাধারণত রিসোর্স ক্লোজ বা পরিষ্কার করতে ব্যবহৃত হয়।

এই তিনটি ব্লক একত্রে ব্যবহার করার মাধ্যমে আপনি Java প্রোগ্রামে এক্সসেপশনগুলিকে সঠিকভাবে হ্যান্ডেল করতে পারেন এবং সফটওয়্যারটির স্থিতিশীলতা ও পারফরম্যান্স উন্নত করতে পারেন।

Content added By

জাভা তে Custom Exception তৈরি করার মাধ্যমে আপনি নিজের প্রয়োজন অনুযায়ী কাস্টম এক্সেপশন তৈরি করতে পারেন, যা আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট ধরনের ত্রুটি (error) বা ব্যতিক্রম (exception) চিহ্নিত করতে সাহায্য করবে। জাভার built-in exceptions যেমন IOException, SQLException, ইত্যাদির পরিবর্তে কাস্টম এক্সেপশন ব্যবহার করে আপনার অ্যাপ্লিকেশনে আরও নির্দিষ্ট এবং অর্থপূর্ণ ত্রুটি পরিচালনা করতে পারবেন।

Custom Exception তৈরি করার ধাপ:

১. Exception ক্লাস অথবা RuntimeException ক্লাসের একটি সাবক্লাস তৈরি করুন:

  • জাভার Exception ক্লাস বা RuntimeException ক্লাস থেকে ইনহেরিট (inherit) করে কাস্টম এক্সেপশন তৈরি করা হয়।
  • যদি আপনি checked exception তৈরি করতে চান (যে এক্সেপশনটি কম্পাইল টাইমে ধরতে হয়), তাহলে Exception ক্লাস থেকে ইনহেরিট করুন।
  • যদি আপনি unchecked exception তৈরি করতে চান (যে এক্সেপশনটি রানটাইমে ধরতে হয়), তাহলে RuntimeException ক্লাস থেকে ইনহেরিট করুন।

২. কনস্ট্রাক্টর এবং মেসেজ ফিল্ড যুক্ত করুন:

  • কাস্টম এক্সেপশনের জন্য একটি কনস্ট্রাক্টর তৈরি করুন, যাতে আপনি এক্সেপশনের মেসেজ এবং অন্যান্য তথ্য পাস করতে পারেন।

Custom Exception উদাহরণ:

Checked Custom Exception Example:

// Custom checked exception class
public class InvalidAgeException extends Exception {
    
    // Constructor that accepts a custom message
    public InvalidAgeException(String message) {
        super(message);  // Call the parent class (Exception) constructor with the message
    }
}

Unchecked Custom Exception Example:

// Custom unchecked exception class
public class NegativeAmountException extends RuntimeException {
    
    // Constructor that accepts a custom message
    public NegativeAmountException(String message) {
        super(message);  // Call the parent class (RuntimeException) constructor with the message
    }
}

Custom Exception ব্যবহার করার উদাহরণ:

Checked Exception Example:

public class TestCustomException {

    // Method to check age
    public static void checkAge(int age) throws InvalidAgeException {
        if (age < 18) {
            throw new InvalidAgeException("Age cannot be less than 18");
        } else {
            System.out.println("Age is valid.");
        }
    }

    public static void main(String[] args) {
        try {
            checkAge(16);  // This will throw InvalidAgeException
        } catch (InvalidAgeException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
}

Unchecked Exception Example:

public class TestUncheckedException {

    // Method to withdraw amount
    public static void withdrawAmount(double amount) {
        if (amount < 0) {
            throw new NegativeAmountException("Amount cannot be negative");
        } else {
            System.out.println("Amount withdrawn: " + amount);
        }
    }

    public static void main(String[] args) {
        try {
            withdrawAmount(-500);  // This will throw NegativeAmountException
        } catch (NegativeAmountException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
}

Custom Exception এর বৈশিষ্ট্য:

  1. কাস্টম মেসেজ প্রদান করা:
    • কাস্টম এক্সেপশন তৈরি করার সময় আপনি এর কনস্ট্রাক্টরের মাধ্যমে একটি কাস্টম মেসেজ পাস করতে পারবেন, যা ব্যতিক্রমের কারণ বা অবস্থান বুঝতে সাহায্য করবে।
  2. Stack Trace:
    • Exception অথবা RuntimeException থেকে ইনহেরিট করা হলে, কাস্টম এক্সেপশনও স্ট্যাক ট্রেস সরবরাহ করবে, যা আপনাকে ত্রুটির উৎস খুঁজে বের করতে সাহায্য করবে।
  3. Checked এবং Unchecked Exception:
    • আপনি যদি Exception ক্লাস থেকে ইনহেরিট করেন, তাহলে এটি একটি checked exception হবে, এবং এটি try-catch ব্লকে অথবা মেথডের সিগনেচারে throws কীওয়ার্ড দিয়ে ঘোষণা করতে হবে।
    • আপনি যদি RuntimeException ক্লাস থেকে ইনহেরিট করেন, তাহলে এটি একটি unchecked exception হবে, এবং আপনাকে এটি হ্যান্ডল করার জন্য try-catch ব্লক ব্যবহার করতে হবে না।

Custom Exception এর জন্য কিছু সেরা অভ্যাস:

  • কাস্টম এক্সেপশন তৈরি করার সময়, যথাযথ এক্সেপশন হ্যান্ডলিং পদ্ধতি ব্যবহার করুন।
  • যথাসম্ভব সাধারণ এবং পরিষ্কার নাম ব্যবহার করুন, যাতে এক্সেপশনটি কী ধরণের সমস্যা বা ত্রুটি নির্দেশ করছে তা সহজে বোঝা যায়।
  • যখন আপনি কাস্টম এক্সেপশন ব্যবহার করেন, তখন এটি অবশ্যই প্রাসঙ্গিক কনটেক্সট বা কার্যকারিতা সম্পর্কিত হতে হবে, যেমন একটি InvalidAgeException শুধুমাত্র বয়স সংক্রান্ত ত্রুটির জন্য ব্যবহার করা উচিত।
  • কাস্টম এক্সেপশনের কনস্ট্রাক্টরগুলিতে super() ব্যবহার করে Exception বা RuntimeException এর মেসেজ প্রপার্টি সঠিকভাবে সেট করুন।

জাভাতে কাস্টম এক্সেপশন তৈরি করা সহজ, এবং এটি আপনাকে আপনার অ্যাপ্লিকেশনের জন্য আরও নির্দিষ্ট ত্রুটি বা ব্যতিক্রম চিহ্নিত করতে সহায়তা করে। উপরের উদাহরণ এবং পদ্ধতিগুলি আপনাকে কাস্টম এক্সেপশন তৈরির এবং সেগুলি ব্যবহারের ক্ষেত্রে একটি পরিষ্কার ধারণা দেবে।

Content added By
Promotion

Are you sure to start over?

Loading...