Java তে Exception Handling একটি গুরুত্বপূর্ণ প্রক্রিয়া যা আপনাকে প্রোগ্রাম চলাকালীন ত্রুটি বা সমস্যা (exception) সামাল দিতে সাহায্য করে। Java তে try-catch, throw, throws, এবং finally এর মতো কন্ট্রোল স্টেটমেন্ট ব্যবহার করে Exception Handling করা হয়।
এই উদাহরণে একটি সংখ্যাকে শূন্য দিয়ে ভাগ করার চেষ্টা করা হয়েছে, যা একটি ArithmeticException ত্রুটি সৃষ্টি করবে। try-catch
ব্লক ব্যবহার করে ত্রুটিটি ধরা হয়েছে।
public class BasicExceptionHandling {
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.");
}
}
}
Output:
Error: Division by zero is not allowed.
ArithmeticException
) উল্লেখ করা হয়, যা আপনার প্রোগ্রামের ত্রুটি ধরতে সাহায্য করে।একাধিক ধরনের ত্রুটি ধরতে multiple catch blocks ব্যবহার করা হয়। এখানে আমরা ArithmeticException এবং ArrayIndexOutOfBoundsException একসাথে ব্যবহার করব।
public class MultipleCatchExample {
public static void main(String[] args) {
try {
int[] numbers = new int[5];
numbers[10] = 25; // This will throw ArrayIndexOutOfBoundsException
} catch (ArithmeticException e) {
System.out.println("ArithmeticException caught!");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException caught!");
}
}
}
Output:
ArrayIndexOutOfBoundsException caught!
একটি try
ব্লক এর মধ্যে আরেকটি try-catch
ব্লক থাকতে পারে। এটি তখন ব্যবহার করা হয় যখন একাধিক ধরনের exception সম্ভাব্য থাকে এবং তাদের পৃথকভাবে পরিচালনা করা প্রয়োজন।
public class NestedTryCatchExample {
public static void main(String[] args) {
try {
try {
int result = 10 / 0; // This will throw ArithmeticException
} catch (ArithmeticException e) {
System.out.println("ArithmeticException caught inside inner try block.");
}
String str = null;
str.length(); // This will throw NullPointerException
} catch (NullPointerException e) {
System.out.println("NullPointerException caught in outer try block.");
}
}
}
Output:
ArithmeticException caught inside inner try block.
NullPointerException caught in outer try block.
try
ব্লকে ধরা হয়েছে এবং পরে NullPointerException বাহ্যিক catch
ব্লকে ধরা হয়েছে।throw এবং throws স্টেটমেন্ট ব্যবহার করা হয় ত্রুটি প্রবর্তন এবং ঘোষণা করার জন্য।
public class ThrowThrowsExample {
// Method declares exception using throws
public static void validateAge(int age) throws Exception {
if (age < 18) {
throw new Exception("Age must be 18 or above.");
}
}
public static void main(String[] args) {
try {
validateAge(16); // Throws Exception
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Output:
Age must be 18 or above.
validateAge
মেথডে, যা Exception সৃষ্টির সম্ভাবনা দেখাচ্ছে। এর মানে হল যে এই মেথডটি একটি Exception ছুঁড়ে দিতে পারে।new Exception("message")
ব্যবহার করে Exception ছোঁড়া হয়েছে।finally ব্লকটি এমন একটি ব্লক যা সর্বদা চলবে, যদি ত্রুটি ঘটে বা না ঘটে, এটি সবসময় রান হয়।
public class FinallyExample {
public static void main(String[] args) {
try {
int[] numbers = new int[2];
numbers[5] = 10; // This will throw ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Exception caught: " + e);
} finally {
System.out.println("This will always execute.");
}
}
}
Output:
Exception caught: java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 2
This will always execute.
নিজের একটি custom exception তৈরি করা যায়, যা আপনার প্রোগ্রামে বিশেষ ধরনের ত্রুটি পরিচালনা করতে সাহায্য করে।
// Custom Exception class
class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}
public class CustomExceptionExample {
public static void main(String[] args) {
try {
int age = 15;
if (age < 18) {
throw new AgeException("Age must be 18 or above.");
}
} catch (AgeException e) {
System.out.println(e.getMessage());
}
}
}
Output:
Age must be 18 or above.
Java তে Exception Handling অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি প্রোগ্রামের ত্রুটির সঠিক এবং নিরাপদ পরিচালনা নিশ্চিত করে। try-catch, throw, throws, এবং finally ব্যবহার করে ত্রুটি শনাক্ত এবং পরিচালনা করা সম্ভব। উপরের উদাহরণগুলো Java Exception Handling-এর মূল ধারণা বুঝতে সাহায্য করবে।
Java Exception Handling একটি শক্তিশালী ফিচার যা প্রোগ্রামের রuntime-errors বা অন্য কোন অনাকাঙ্ক্ষিত সমস্যা প্রতিরোধ করতে সহায়ক। try-catch
ব্লক Java তে exception handling করার জন্য ব্যবহৃত হয়। এটি যখন কোনো কোড ব্লকে exception (ত্রুটি) ঘটে, তখন তা catch
ব্লকে ধরা হয় এবং প্রোগ্রামটি ক্র্যাশ না হয়ে সঠিকভাবে চলতে থাকে।
try {
// কোড যা exception ঘটাতে পারে
} catch (ExceptionType e) {
// exception ধরা হলে এটি execute হবে
}
এখানে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে একটি ArithmeticException
ধরা হয়েছে, যা 0 দ্বারা ভাগ করার সময় ঘটে।
public class TryCatchExample {
public static void main(String[] args) {
int a = 10;
int b = 0;
try {
// কোড যা exception ঘটাতে পারে
int result = a / b; // 0 দ্বারা ভাগ করার চেষ্টা
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
// ArithmeticException ধরা হলে এই ব্লক execute হবে
System.out.println("Error: Cannot divide by zero.");
}
System.out.println("Program continues...");
}
}
try
ব্লক: এখানে ১০কে ০ দ্বারা ভাগ করার চেষ্টা করা হয়েছে, যা একটি ArithmeticException
সৃষ্টি করবে।catch
ব্লক: catch (ArithmeticException e)
দিয়ে সেই exception ধরা হচ্ছে। এখানে exception ধরা হলে "Error: Cannot divide by zero."
মেসেজটি প্রিন্ট হবে এবং প্রোগ্রামটি থামবে না, চালু থাকবে।catch
ব্লক থেকে exception সঠিকভাবে হ্যান্ডল করার পর প্রোগ্রামটি এটার পরবর্তী অংশে চলে যাবে।Output:
Error: Cannot divide by zero.
Program continues...
একই try
ব্লক থেকে একাধিক ভিন্ন ধরনের exception ধরার জন্য একাধিক catch
ব্লক ব্যবহার করা যায়। এখানে আমরা একটি ArithmeticException
এবং ArrayIndexOutOfBoundsException
ধরার চেষ্টা করেছি।
public class MultipleCatchExample {
public static void main(String[] args) {
try {
// ArithmeticException
int a = 10;
int b = 0;
int result = a / b;
// ArrayIndexOutOfBoundsException
int[] numbers = new int[2];
numbers[5] = 10; // Trying to access index 5, which is out of bounds
} catch (ArithmeticException e) {
System.out.println("Error: Cannot divide by zero.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error: Array index is out of bounds.");
} catch (Exception e) {
// General Exception
System.out.println("Error: An unexpected error occurred.");
}
System.out.println("Program continues...");
}
}
catch
ব্লক আছে—একটি ArithmeticException
এবং একটি ArrayIndexOutOfBoundsException
এর জন্য।Exception
ক্লাস দ্বারা ধরা হবে, কারণ এটি Java তে সব ধরনের exceptions এর বেস ক্লাস।Output:
Error: Cannot divide by zero.
Program continues...
finally
ব্লক ব্যবহার করা হয় এমন কোডগুলোর জন্য যা অবশ্যই execute হবে, exception ঘটুক বা না ঘটুক। যেমন, resources বন্ধ করা (যেমন: ফাইল স্ট্রিম) বা শেষের পরিষ্কারক কাজ।
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("In try block");
int result = 10 / 2;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Error: Cannot divide by zero.");
} finally {
// This block will execute regardless of whether an exception occurs
System.out.println("Finally block executed");
}
System.out.println("Program continues...");
}
}
finally
block: এটি তখনই execute হবে, যখন try
ব্লক শেষ হয়, এবং কোনো exception ঘটুক বা না ঘটুক, এটি অবশ্যই চলবে।finally
ব্লকটি রিসোর্স ক্লিনআপের জন্য ব্যবহৃত হয় যেমন ফাইল বা ডেটাবেস সংযোগ বন্ধ করা।Output:
In try block
Result: 5
Finally block executed
Program continues...
যখন একটি মেথড exception ফেলে এবং সেটি আরেকটি মেথডে পাঠানো হয়, তখন আমরা exception propagation এর কথা বলি।
public class ExceptionPropagationExample {
public static void main(String[] args) {
try {
method1();
} catch (Exception e) {
System.out.println("Caught exception: " + e);
}
}
public static void method1() throws Exception {
method2();
}
public static void method2() throws Exception {
throw new Exception("An error occurred in method2");
}
}
throws
keyword: method1()
এবং method2()
তে throws Exception
ব্যবহৃত হয়েছে, যা ইঙ্গিত দেয় যে এই মেথডগুলিতে exception ঘটতে পারে এবং সেগুলি main()
মেথডে প্রেরণ করা হবে।method2()
তে exception ঘটলে, তা method1()
এ পাঠানো হবে এবং পরে main()
মেথডে এটি catch করা হবে।Output:
Caught exception: java.lang.Exception: An error occurred in method2
Java তে exception handling কোডে ত্রুটি বা সমস্যা ঘটলে প্রোগ্রামটি ক্র্যাশ না হয়ে সঠিকভাবে কাজ করতে সহায়তা করে। try-catch
, finally
এবং exception propagation এর মাধ্যমে আপনি আপনার প্রোগ্রামে ত্রুটির হ্যান্ডলিং সঠিকভাবে করতে পারবেন। এটি আপনাকে শক্তিশালী এবং রোবাস্ট অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।
Java তে Multiple Catch Blocks ব্যবহার করা হয় বিভিন্ন ধরনের Exceptions হ্যান্ডল করার জন্য। একাধিক catch
ব্লক ব্যবহার করে, আপনি একে একে একাধিক ধরনের exceptions কভার করতে পারেন, যাতে এক বা একাধিক ধরনের ত্রুটি (errors) হলে সেগুলি যথাযথভাবে হ্যান্ডল করা যায়।
Java 7 থেকে multi-catch ব্লকও চালু হয়েছে, যার মাধ্যমে একাধিক এক্সসেপশন একটি একক catch
ব্লকে ক্যাচ করা সম্ভব।
নিচে একটি উদাহরণ দেয়া হলো যেখানে একাধিক catch
ব্লক ব্যবহার করে বিভিন্ন ধরনের exceptions হ্যান্ডল করা হয়েছে:
public class MultipleCatchExample {
public static void main(String[] args) {
try {
// Dividing by zero (ArithmeticException)
int result = 10 / 0;
// Array index out of bounds (ArrayIndexOutOfBoundsException)
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
// NullPointerException
String str = null;
System.out.println(str.length());
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero is not allowed!");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error: Array index out of bounds!");
} catch (NullPointerException e) {
System.out.println("Error: Attempt to access an object that is null!");
} catch (Exception e) {
System.out.println("General error: " + e.getMessage());
}
}
}
ArithmeticException
, ArrayIndexOutOfBoundsException
, এবং NullPointerException
।catch
ব্লক ব্যবহার করা হয়েছে।catch(Exception e)
ব্লক ব্যবহার করা হয়েছে যা অন্যান্য এক্সসেপশনের জন্য কাজ করবে।Error: Division by zero is not allowed!
Java 7 থেকে একটি নতুন সুবিধা যুক্ত হয়েছে, যা হলো multi-catch ব্লক। এর মাধ্যমে আপনি একাধিক এক্সসেপশন এক সাথে একটি catch
ব্লকে হ্যান্ডল করতে পারেন। এটি কোডের পুনরাবৃত্তি কমাতে সহায়তা করে।
public class MultiCatchExample {
public static void main(String[] args) {
try {
// Dividing by zero (ArithmeticException)
int result = 10 / 0;
// Array index out of bounds (ArrayIndexOutOfBoundsException)
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArithmeticException | ArrayIndexOutOfBoundsException | NullPointerException e) {
System.out.println("Error: " + e.getClass().getName() + " occurred!");
}
}
}
catch
ব্লকটি একাধিক এক্সসেপশন (যেমন ArithmeticException
, ArrayIndexOutOfBoundsException
, এবং NullPointerException
) একসাথে ক্যাচ করতে পারে। এর ফলে কোড অনেক বেশি সংক্ষিপ্ত এবং পরিষ্কার হয়ে ওঠে।ArithmeticException
বা ArrayIndexOutOfBoundsException
।Error: java.lang.ArithmeticException occurred!
finally
Block with Multiple Catch Blocksএকাধিক catch
ব্লকের সাথে finally
ব্লক ব্যবহার করা হলে, এটি একটি নির্দিষ্ট কোড ব্লক চালানোর জন্য ব্যবহৃত হয় যা যে কোনো ক্ষেত্রে এক্সসেপশন হ্যান্ডলিংয়ের পরে চালানো হয় (যেমন ফাইল ক্লোজ করা বা রিসোর্স মুক্ত করা)।
public class FinallyWithCatchExample {
public static void main(String[] args) {
try {
// Dividing by zero (ArithmeticException)
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero is not allowed!");
} finally {
System.out.println("Finally block executed: Cleanup actions.");
}
}
}
finally
ব্লকটি ব্যবহৃত হয় এমন কোড লেখার জন্য যা যেকোনো ক্ষেত্রে চালানো উচিত, যেমন ক্লোজিং ফাইল বা মেমরি রিলিজ করা, যা এক্সসেপশন হ্যান্ডলিংয়ের পরও কাজ করতে হয়।Error: Division by zero is not allowed!
Finally block executed: Cleanup actions.
catch
ব্লক ব্যবহার করে বিভিন্ন ধরনের এক্সসেপশন হ্যান্ডল করতে পারেন। এতে এক্সসেপশনের ধরন অনুযায়ী নির্দিষ্ট ব্লক এক্সিকিউট হবে।catch
ব্লকে একাধিক এক্সসেপশন হ্যান্ডল করতে পারেন, যা কোডের পুনরাবৃত্তি কমায় এবং আরও পরিষ্কার ও সোজা কোড তৈরি করে।finally
ব্লকটি এমন কোড রাখার জন্য ব্যবহৃত হয় যেটি এক্সসেপশন হ্যান্ডলিং শেষ হওয়ার পরে অবশ্যই এক্সিকিউট হয়, যেমন ফাইল বা নেটওয়ার্ক কানেকশন বন্ধ করা।catch
ব্লকগুলি ব্যবহার করে আপনার কোডের রোবাস্টনেস এবং ত্রুটি হ্যান্ডলিং আরও কার্যকরী করা যায়।catch
ব্লকে হ্যান্ডল করা যায়।Java তে exception handling একটি গুরুত্বপূর্ণ বিষয়। যখন কোনো রানটাইম এরর বা অস্বাভাবিক ঘটনা ঘটে, তখন exception থ্রো (throw) বা ডিক্লেয়ার (declare) করা হয় যাতে সিস্টেমটি সঠিকভাবে রেসপন্ড করতে পারে।
throw
: এটি একটি কিওয়ার্ড যা কাস্টম exception তৈরি করে এবং তাতে মান সরবরাহ করে, অর্থাৎ আপনি একটি exception কুন্দলি করে তাতে ডাটা পাস করে থ্রো করতে পারেন।throws
: এটি একটি কিওয়ার্ড যা একটি মেথড ডিক্লেয়ারেশনে ব্যবহৃত হয়, যার মাধ্যমে মেথডটি এমন একটি exception ফেলে যা সে নিজে হ্যান্ডেল করতে না পারে, অন্যথায় এই exception অন্য কোথাও হ্যান্ডেল করতে হবে।throw
ব্যবহৃত হয় exception থ্রো করার জন্য, যখন আপনি একটি exception তৈরি করেন এবং সেটি throw
করে দেন।throws
ব্যবহৃত হয় method declaration-এ exception ডিক্লেয়ার করার জন্য, যাতে মেথডটির ব্যবহারকারী জানে যে এটি কিছু exception ছুঁড়ে দিতে পারে, এবং সেই exception হ্যান্ডেল করা দরকার।এখানে একটি কাস্টম exception তৈরি করা হবে এবং তাকে থ্রো করা হবে।
// Custom Exception class
class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}
public class ThrowExample {
public static void validateAge(int age) throws AgeException {
if (age < 18) {
throw new AgeException("Age is less than 18, you are not eligible.");
} else {
System.out.println("Age is valid.");
}
}
public static void main(String[] args) {
try {
validateAge(15); // Throws exception because age is less than 18
} catch (AgeException e) {
System.out.println(e.getMessage()); // Handling exception
}
}
}
AgeException
: একটি কাস্টম exception তৈরি করা হয়েছে যা Exception
ক্লাস থেকে extends করা হয়েছে।validateAge()
: এটি একটি মেথড যা age চেক করে এবং যদি এটি ১৮ বছরের কম হয়, তবে একটি AgeException
থ্রো করা হয়।main()
: এখানে validateAge(15)
মেথড কল করা হয়েছে, যা AgeException
থ্রো করবে, এবং এটি catch block দিয়ে হ্যান্ডেল করা হয়েছে।Output:
Age is less than 18, you are not eligible.
এখানে throws কিওয়ার্ড ব্যবহার করা হবে যাতে মেথডটি exception ডিক্লেয়ার করতে পারে এবং সেই exception হ্যান্ডেল করতে হবে বাইরে।
// Custom Exception class
class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}
public class ThrowsExample {
// Method that declares the exception using 'throws'
public static void validateAge(int age) throws AgeException {
if (age < 18) {
throw new AgeException("Age is less than 18, you are not eligible.");
} else {
System.out.println("Age is valid.");
}
}
public static void main(String[] args) {
try {
validateAge(15); // Throws exception because age is less than 18
} catch (AgeException e) {
System.out.println(e.getMessage()); // Handling exception
}
}
}
validateAge()
মেথডে throws AgeException ব্যবহৃত হয়েছে, যা এটি জানাচ্ছে যে এটি AgeException
ফেলে দিতে পারে।main()
মেথডে exception হ্যান্ডলিং করা হয়েছে try-catch
ব্লক দিয়ে।Output:
Age is less than 18, you are not eligible.
বিষয় | throw | throws |
---|---|---|
ব্যবহার | একটি exception থ্রো করতে ব্যবহৃত হয়। | একটি মেথডের exception ডিক্লেয়ার করতে ব্যবহৃত হয়। |
কোড সেগমেন্ট | সাধারণত মেথডের মধ্যে exception থ্রো করা হয়। | মেথড সিগনেচারে exception ডিক্লেয়ার করা হয়। |
কাজ | exception তৈরি এবং তা থ্রো করা। | exception ফেলে দেয় এবং হ্যান্ডলিং এর দায়িত্ব অন্যদের উপর চাপায়। |
AgeException
বা InsufficientBalanceException
)।Exception
ক্লাসের পরিবর্তে নির্দিষ্ট exception টাইপ ব্যবহার করুন যাতে ত্রুটি শনাক্ত করা সহজ হয়।throw
: একটি exception ইনস্ট্যান্স থ্রো করতে ব্যবহৃত হয় এবং এটি আপনি যখন একটি exception তৈরি করতে চান তখন ব্যবহার করেন।throws
: এটি মেথডের মধ্যে ডিক্লেয়ার করা হয়, যা জানায় যে মেথডটি একটি নির্দিষ্ট exception ফেলে দিতে পারে এবং এর হ্যান্ডলিং বাইরে করতে হবে।এটি Java তে exception হ্যান্ডলিং করার একটি গুরুত্বপূর্ণ অংশ যা সঠিকভাবে ব্যবহৃত হলে প্রোগ্রামটিকে আরো রোবস্ট এবং ত্রুটিমুক্ত করে তোলে।
Java Custom Exception হল একটি কাস্টম এক্সেপশন ক্লাস তৈরি করা, যা Java এর বিল্ট-ইন এক্সেপশন ক্লাস থেকে এক্সটেন্ড করা হয় এবং সিস্টেমের নির্দিষ্ট ত্রুটি (error) বা পরিস্থিতি (condition) হ্যান্ডল করতে ব্যবহৃত হয়। কাস্টম এক্সেপশন তৈরি করা হয় যখন Java এর ডিফল্ট এক্সেপশন ক্লাসগুলি যথেষ্ট উপযুক্ত নয় বা আপনার প্রজেক্টে বিশেষ ত্রুটি পরিচালনার প্রয়োজন হয়।
Exception
বা RuntimeException
ক্লাস থেকে একটি নতুন ক্লাস তৈরি করতে হয়।extends Exception
(যদি checked exception তৈরি করতে চান) অথবা extends RuntimeException
(যদি unchecked exception তৈরি করতে চান) ব্যবহার করা হয়।// Custom Exception class: InvalidAgeException
public class InvalidAgeException extends Exception {
// Constructor that accepts a message
public InvalidAgeException(String message) {
super(message); // Calling parent constructor to pass the message
}
}
এখানে, InvalidAgeException
একটি কাস্টম এক্সেপশন ক্লাস, যা Exception
ক্লাস থেকে এক্সটেন্ড করা হয়েছে। এই ক্লাসে একটি কনস্ট্রাক্টর রয়েছে যা একটি ত্রুটির বার্তা গ্রহণ করে।
// Main class where custom exception will be used
public class CustomExceptionExample {
// Method that checks age and throws custom exception if age is invalid
public static void validateAge(int age) throws InvalidAgeException {
if (age < 18) {
// Throwing custom exception with a message
throw new InvalidAgeException("Age must be 18 or older to register.");
} else {
System.out.println("Age is valid. Registration successful!");
}
}
public static void main(String[] args) {
try {
validateAge(15); // Testing with an invalid age
} catch (InvalidAgeException e) {
// Catching and handling custom exception
System.out.println("Caught exception: " + e.getMessage());
}
try {
validateAge(20); // Testing with a valid age
} catch (InvalidAgeException e) {
System.out.println("Caught exception: " + e.getMessage());
}
}
}
InvalidAgeException
):InvalidAgeException
তৈরি করেছি যা Exception
ক্লাস থেকে এক্সটেন্ড করা হয়েছে।super(message)
এর মাধ্যমে প্যারেন্ট ক্লাসে পাঠায়।validateAge
মেথডটি একটি ইনপুট age
নিয়ে, এবং যদি বয়স ১৮ এর নিচে হয় তবে কাস্টম এক্সেপশন থ্রো করে।main
মেথডে validateAge
মেথডটি দুইবার কল করা হয়েছে — একবার অবৈধ বয়স (১৫) দিয়ে এবং একবার বৈধ বয়স (২০) দিয়ে।InvalidAgeException
ক্যাচ ব্লকটি কাস্টম এক্সেপশনটি হ্যান্ডল করে এবং ব্যবহারকারীকে উপযুক্ত ত্রুটির বার্তা দেখায়।Caught exception: Age must be 18 or older to register.
Age is valid. Registration successful!
Exception
ক্লাস থেকে এক্সটেন্ড করা হয়, তখন সেগুলি checked exceptions হিসেবে বিবেচিত হয়। এর মানে হলো, আপনি যখন এটি থ্রো করবেন, তখন মেথড সিগনেচারে throws InvalidAgeException
যুক্ত করতে হবে এবং কলারকে এই এক্সেপশনটি হ্যান্ডল করতে হবে।RuntimeException
থেকে এক্সটেন্ড করেন, তবে এটি unchecked exception হবে, এবং এটি ক্যাচ না করলেও চলবে।Java Finally Block একটি বিশেষ ব্লক যা try-catch-finally স্ট্রাকচারে ব্যবহৃত হয়। এটি সাধারণত resource management এর জন্য ব্যবহৃত হয়, যেমন ফাইল বা ডাটাবেস কানেকশন বন্ধ করা, বা অন্যান্য ক্লিনআপ অপারেশন করার জন্য। Finally block এমন একটি ব্লক যা try বা catch ব্লকের পরে যাই হোক না কেন, সর্বদা এক্সিকিউট হয়। এটি মূলত clean-up code হিসেবে কাজ করে, এবং একে ব্যবহার করার মাধ্যমে আপনি কোডের কার্যকারিতা ও সিস্টেমের নিরাপত্তা নিশ্চিত করতে পারেন।
finally
ব্লকটি যেকোনো পরিস্থিতিতেই এক্সিকিউট হবে, এমনকি যদি একটি এক্সিপশন হয় তাও। এটি নিশ্চিত করে যে নির্দিষ্ট কোড কার্যকর হবে।ধরা যাক, একটি ফাইল ওপেন করা হচ্ছে, কিছু ডেটা পড়া হচ্ছে এবং শেষ পর্যন্ত ফাইলটি বন্ধ করতে হবে। এমন পরিস্থিতিতে finally block
ব্যবহার করে ফাইলটি সঠিকভাবে বন্ধ করা যায়, এমনকি যদি কোন exception ঘটে।
import java.io.*;
public class FinallyBlockExample {
public static void main(String[] args) {
FileReader file = null;
BufferedReader reader = null;
try {
// ফাইল খোলা
file = new FileReader("example.txt");
reader = new BufferedReader(file);
// ফাইলের ডেটা পড়া
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// Exception Handling
System.out.println("An error occurred while reading the file: " + e.getMessage());
} finally {
// Finally block ব্যবহার করে resources বন্ধ করা
try {
if (reader != null) {
reader.close();
System.out.println("BufferedReader closed.");
}
if (file != null) {
file.close();
System.out.println("FileReader closed.");
}
} catch (IOException e) {
// Exception Handling while closing resources
System.out.println("An error occurred while closing the resources: " + e.getMessage());
}
}
}
}
example.txt
ফাইলটি সঠিকভাবে থাকে এবং পড়ে নেওয়া যায়, তবে আউটপুট হতে পারে:Line 1 content
Line 2 content
BufferedReader closed.
FileReader closed.
An error occurred while reading the file: example.txt (No such file or directory)
An error occurred while closing the resources: null
finally
ব্লকটি নিশ্চিত করে যে আপনি resources সঠিকভাবে বন্ধ করবেন, এমনকি যদি কোডের মধ্যে একটি exception ঘটে।finally
ব্লক নিশ্চিত করে যে resources বন্ধ হবে এবং মেমরি লিক থেকে রক্ষা করবে।finally
ব্লক ব্যবহার করলে কোডের মধ্যে resource cleanup করার জন্য আলাদা স্টেটমেন্ট লেখার প্রয়োজন হয় না এবং কোড পরিষ্কার থাকে।finally
ব্লক resource management এবং clean-up করার জন্য অত্যন্ত গুরুত্বপূর্ণ। যখন আপনি ফাইল, ডাটাবেস, নেটওয়ার্ক সোসকেট বা অন্য কোনো resource নিয়ে কাজ করেন, তখন এই ব্লকটি ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে resources সঠিকভাবে বন্ধ হবে, এবং সিস্টেমের কার্যকারিতা বজায় থাকবে।
Read more