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

জাভাতে এক্সসেপশন থ্রো করার পদ্ধতি

এক্সসেপশন হল প্রোগ্রাম এক্সিকিউশন চলাকালীন ঘটা অপ্রত্যাশিত ইভেন্ট। যখন আপনার কোড একটি এক্সসেপশন مواجه করে, আপনার প্রোগ্রামের ফ্লো টার্মিনেট হয়ে যায়।

জাভায় কোডিং করার সময় এক্সসেপশন সঠিকভাবে হ্যান্ডেল করা গুরুত্বপূর্ণ। অন্যথায়, আপনার কোড এক্সিকিউশন চলাকালীন টার্মিনেট হয়ে যেতে পারে এবং এন্ড-ইউজার এক্সপেরিয়েন্স প্রভাবিত হতে পারে।

সেই সময় throw এবং throws কীওয়ার্ডগুলো কাজে আসে। জাভা throw এবং throws কীওয়ার্ড জাভাতে এক্সসেপশন হ্যান্ডেল করতে ব্যবহৃত হয়। এই টিউটোরিয়ালে উদাহরণসহ এই কীওয়ার্ডগুলো জাভাতে কীভাবে ব্যবহার করতে হয় তা আলোচনা করা হয়েছে।

জাভা এক্সসেপশন

জাভাতে, দুটি ইভেন্ট আছে যা আপনার প্রোগ্রামের ফ্লোকে প্রভাবিত করতে পারে: এরর এবং এক্সসেপশন।

প্রথম ইভেন্ট হল এরর, যা জাভা ভার্চুয়াল মেশিনের সমস্যাগুলো রিপ্রেজেন্ট করে যেমন মেমোরি লিক, সিস্টেমের মেমোরি শেষ হওয়া, এবং লাইব্রেরি কম্প্যাটিবিলিটি সমস্যা। যখন একটি এরর مواجه করা হয়, প্রোগ্রাম রিকভার করতে সক্ষম হয় না। তবে, এরর সাধারণত কোডারের নিয়ন্ত্রণ বাইরে থাকে, তাই জাভাতে আমরা এরর হ্যান্ডেল করি না। 

দ্বিতীয় ইভেন্ট হল এক্সসেপশন। এক্সসেপশন আপনার কোডে ক্যাচ এবং হ্যান্ডেল করা যায়। যখন একটি এক্সসেপশন مواجه করা হয়, এক্সসেপশন সম্পর্কে তথ্য সহ একটি অবজেক্ট তৈরি হয়, jota আপনি আপনার কোডকে বতায়তে পারেন যে এক্সসেপশন مواجه হলে কী হলো উচিত।

এক্সসেপশন হওয়ার কিছু কারণ:

  • আপনার কোডে এরর
  • অস্তিত্বহীন ফাইল খোলা
  • অবৈধ ইউজার ইনপুট
  • নেটওয়ার্ক কানেক্টিভিটি হারানো

হ্যান্ডেল করার আগে জানা দরকার এক্সসেপশনের দুটি টাইপ:

  • Unchecked exceptions রান-টাইমে চেক হয়। এতে ArithmeticException এবং ArrayIndexOutOfBoundsException অন্তর্ভুক্ত।
  • Checked exceptions কম্পাইল-টাইমে চেক হয়, এবং এতে IOException এবং InterruptedException অন্তর্ভুক্ত।

বেশির ভাগ সময়, আপনি আপনার কোডে চেকড এক্সসেপশন হ্যান্ডেল করতে চাবেন। কারণ আনচেকড এক্সসেপশন সাধারণত প্রোগ্রামিং এররর ফলাফল, বরং আপনার কোডে অপ্রত্যাশিত আচরণ নয়।

জাভা Throws কীওয়ার্ড

জাভা throws কীওয়ার্ড একটি কোড ব্লকে কী টাইপের এক্সসেপশন উত্থান হতে পারে তা ঘোষণা করতে ব্যবহৃত হয়। throws ক্লজের সিনট্যাক্স নিচে দেওয়া হলো:

accessModifier return functionName() throws Exception1, Exception2 { // Run code } 

এটি কীভাবে কাজ করতে পারে তা বোঝানোর জন্য একটি উদাহরণ ব্যবহার করি। মনে করুন আমরা একটি সিনেমা হলে ১৬+ সিনেমা দেখতে আসা কাস্টমারের বয়স চেক করার একটি প্রোগ্রাম বানাচ্ছি। যদি কাস্টমার ১৬ বছরের নিচে হয়, তবে তাদের সিনেমা দেখতে দেওয়া হবে না; যদি ১৬ বা তার বেশি হয়, তবে তাদের প্রবেশ দেওয়া হবে।

কাস্টমারের বয়স চেক করে এবং কাস্টমার ১৬ বছরের নিচে হলে ArithmeticException এক্সসেপশন থ্রো করার কোড নিচে দেওয়া হলো:

class Main { public static void verifyAge(int age) throws ArithmeticException { if (age < 16) { throw new ArithmeticException("এই কাস্টমার সিনেমা দেখতে যথেষ্ট বয়স্ক নয়।"); } else { System.out.println("এই কাস্টমার সিনেমা দেখতে যথেষ্ট বয়স্ক।"); } } public static void main(String[] args) { verifyAge(14); } } 

আমাদের কোড রিটার্ন করে:

Exception in thread "main" java.lang.ArithmeticException: এই কাস্টমার সিনেমা দেখতে যথেষ্ট বয়স্ক নয়।

    at Main.verifyAge(Main.java:4)

    at Main.main(Main.java:11)

যখন আমরা এই প্রোগ্রাম রান করি, আমাদের মেইন প্রোগ্রামে নির্দিষ্ট age প্যারামিটার ১৪ সেট করা হয়। এটি ১৬-এর চেয়ে কম, তাই যখন verifyAge() মেথড এক্সিকিউট হয়, age < 16 স্টেটমেন্ট true হিসেবে ইভ্যালুয়েট হয়, এবং একটি ArithmeticException থ্রো হয়।

throws কীওয়ার্ড verifyAge() মেথড দ্বারা রিটার্ন হয়ে যাওয়া এক্সসেপশনের টাইপ সংজ্ঞায়িত করতে ব্যবহৃত হয়। throw কীওয়ার্ড আমাদের প্রোগ্রামে এক্সসেপশন থ্রো করতে ব্যবহৃত হয়।

জাভা Throw কীওয়ার্ড

জাভা throw কীওয়ার্ড আপনার কোডে একটি একক এক্সসেপশন থ্রো করতে ব্যবহৃত হয়। throw কীওয়ার্ডের পর একটি অবজেক্ট থাকে যা প্রোগ্রামে থ্রো হবে যদি এক্সসেপশন مواجه করা হয়।

জাভা throw কীওয়ার্ডের সিনট্যাক্স নিচে দেওয়া হলো:

throw throwObject;

জাভাতে throw স্টেটমেন্ট ব্যবহার করে এক্সসেপশন হ্যান্ডেল করার কিছু উদাহরণ দেখা যাক।

চেকড এক্সসেপশন থ্রো করা

মনে করুন আমরা একটি মেসেজ দেখাতে চাই "এই ফাইল অস্তিত্বে নেই।" যখন আমাদের প্রোগ্রামে IOException مواجه করা হয়। IOExceptions চেকড এক্সসেপশন, তাই আমাদের সেগুলো "throw" কীওয়ার্ড ব্যবহার করে হ্যান্ডেল করা উচিত। এক্সসেপশন হ্যান্ডেল করার কোড নিচে দেওয়া হলো:

import java.io.*; class Main public static void getFile() throws IOException { throw new IOException("এই ফাইল অস্তিত্বে নেই।"); } public static void main(String[] args) { try { getFile(); } catch (IOException error) { System.out.println(e.getMessage()); } } } 

আমাদের কোড রিটার্ন করে:

এই ফাইল অস্তিত্বে নেই।

আমাদের কোড ভাঙে ব্যাখ্যা করি। প্রথমে, আমরা java.io লাইব্রেরি ইম্পোর্ট করি, যা ফাইল হ্যান্ডেল করার যেকোনো প্রোগ্রামে ব্যবহার করা হয়। তারপর আমরা Main নামে একটি ক্লাস তৈরি করি, যা আমাদের প্রোগ্রামের কোড সংরক্ষণ করে।

আমাদের Main ক্লাসে, আমরা getFile() নামে একটি ফাংশন সংজ্ঞায়িত করি যা IOException থ্রো করে। এই ফাংশন "এই ফাইল অস্তিত্বে নেই।" মেসেজসহ একটি IOException আমাদের প্রোগ্রামে থ্রো করবে।

আমাদের Main ক্লাসের মেইন ফাংশনে, আমরা একটি try/catch ব্লক তৈরি করি যা getFile() মেথড এক্সিকিউট করার চেষ্টা করে। যদি IOException مواجه করা হয়, catch ব্লকের কোড এক্সিকিউট হবে, এবং IOException থেকে মেসেজ কনসোলে প্রিন্ট হবে। তাই, আমাদের কোড রিটার্ন করে, "এই ফাইল অস্তিত্বে নেই।", যা আমরা আগে ঘোষণা করেছিলাম।

আনচেকড এক্সসেপশন থ্রো করা

তবে, ধরা যাক আমরা StringIndexOutOfBounds এক্সসেপশন থ্রো করতে চাই যদি আমাদের প্রোগ্রাম একটি স্ট্রিংয়ে এমন একটি ইনডেক্স ভ্যালু অ্যাক্সেস করার চেষ্টা করে যা অস্তিত্বে নেই। আমরা এটি নিচের কোড ব্যবহার করে করতে পারি:

class Main { public static void outOfBounds() { throw new StringIndexOutOfBoundsException("এই ইনডেক্স ভ্যালু অবৈধ।"); } public static void main(String[] args) { outOfBounds(); } } 

আমাদের কোডে অনেক কিছু হচ্ছে, তাই ভাঙে ব্যাখ্যা করি। প্রথমে, আমরা Main নামে একটি ক্লাস ঘোষণা করি যেখানে এই প্রোগ্রামের কোড আছে।

তারপর আমরা outOfBounds() নামে একটি ফাংশন তৈরি করি যা, এক্সিকিউট হলে, একটি StringIndexOutOfBounds এক্সসেপশন থ্রো করবে। এই ইনডেক্স ভ্যালু অবৈধ। মেসেজ এক্সসেপশনের সাথে থাকবে। অবশেষে, আমাদের মেইন প্রোগ্রামে, আমরা outOfBounds() ফাংশন কল করি, যা তারপর রিটার্ন করে:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: এই ইনডেক্স ভ্যালু অবৈধ।

    at Main.outOfBounds(Main.java:3)

    at Main.main(Main.java:7)

এই উদাহরণে, আমরা একটি আনচেকড এক্সসেপশন থ্রো করেছি। আমরা আগে আলোচনা করেছি যে এটি সাধারণত দরকার নয়, কিন্তু আমরা সিনট্যাক্স দেখানোর জন্য 어쨌든 একটি আনচেকড এক্সসেপশন থ্রো করেছি।

উপসংহার

চেকড এক্সসেপশন হ্যান্ডেল করা জাভাতে মেইনটেইনেবল কোড লেখার একটি গুরুত্বপূর্ণ অংশ। জাভাতে, throw এবং throws কীওয়ার্ড এক্সসেপশন থ্রো এবং হ্যান্ডেল করতে ব্যবহৃত হয়।

এই টিউটোরিয়ালে জাভাতে throw এবং throws কীওয়ার্ড কীভাবে ব্যবহার করতে হয় এবং প্রাসঙ্গিক উদাহরণ দিয়ে প্রসেসটি শেখাতে সাহায্য করা হয়েছে। এই টিউটোরিয়াল পড়া শেষে, আপনি জাভাতে এক্সসেপশন থ্রো এবং হ্যান্ডেল প্রফেশনালের মতো করতে পারবেন!

  1. জাভাতে এক্সসেপশন থ্রো করার পদ্ধতি

  2. জাভা-তে ArrayList ইনিশিয়ালাইজেশন: একটি গাইড

  3. C++-এ এক্সসেপশন কীভাবে কাজ করে

  4. জাভা এক্সেপশন হ্যান্ডলিং মাস্টার করুন: সম्पূর্ণ গাইড