কম্পিউটার

C++ এবং জাভাতে ব্যতিক্রম পরিচালনার তুলনা


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

C++ এ, আমরা ব্যতিক্রম হিসেবে যেকোনো ধরনের ডেটা ফেলতে পারি। যে কোনো ধরনের ডেটা মানে আদিম ডেটাটাইপ এবং পয়েন্টারও। জাভাতে আমরা শুধুমাত্র নিক্ষেপযোগ্য বস্তু নিক্ষেপ করতে পারি। যে কোনো নিক্ষেপযোগ্য শ্রেণীর উপশ্রেণীও নিক্ষেপযোগ্য হবে।

উদাহরণ

#include <iostream>
using namespace std;
int main() {
   int x = -5;
   try { //protected code
      if( x < 0 ) {
         throw x;
      }
   }
   catch (int x ) {
      cout << "Exception Caught: thrown value is " << x << endl;
   }
}

আউটপুট

Exception Caught: thrown value is -5

C++-এ, যেকোনো ধরনের ব্যতিক্রম ধরার জন্য ক্যাচ অল নামে একটি বিকল্প রয়েছে। সিনট্যাক্স নিচের মত -

try {
   //protected code
} catch(…) {
   //catch any type of exceptions
}

উদাহরণ

#include <iostream>
using namespace std;
int main() {
   int x = -5;
   char y = 'A';
   try { //protected code
      if( x < 0 ) {
         throw x;
      }
      if(y == 'A') {
         throw y;
      }
   }
   catch (...) {
      cout << "Exception Caught" << endl;
   }
}

আউটপুট

Exception Caught

জাভাতে আমরা যদি কোনো ধরনের ব্যতিক্রম ধরতে চাই তবে আমাদের ব্যতিক্রম ক্লাস ব্যবহার করতে হবে। যা জাভাতে উপস্থিত যেকোনো ব্যতিক্রমের সুপার ক্লাস, অথবা কিছু ব্যবহারকারীর সংজ্ঞায়িত ব্যতিক্রমও। সিনট্যাক্স নিচের মত -

try {
   //protected code
} catch(Exception e) {
   //catch any type of exceptions
}

C++ এর শেষ পর্যন্ত কোন ব্লক নেই। কিন্তু জাভাতে একটি বিশেষ ব্লক আছে যা শেষ পর্যন্ত বলা হয়। আমরা যদি অবশেষে ব্লকে কিছু কোড লিখি, তবে এটি সর্বদা কার্যকর করা হবে। যদি চেষ্টা ব্লক কোনো ত্রুটি ছাড়াই কার্যকর করা হয়, বা ব্যতিক্রম ঘটে, অবশেষে সব সময় কার্যকর করা হবে৷

জাভা

এর জন্য

উদাহরণ

public class HelloWorld {
   public static void main(String []args) {
      try {
         int data = 25/5;
         System.out.println(data);
      } catch(NullPointerException e) {
         System.out.println(e);
      } finally {
         System.out.println("finally block is always executed");
      }
      System.out.println("rest of the code...");
   }
}

আউটপুট

5
finally block is always executed
rest of the code...

  1. C++ এ ব্যতিক্রম হ্যান্ডলিং বেসিক

  2. Java এবং .NET এর তুলনা

  3. জাভাতে মেথড ওভাররাইডিং সহ ব্যতিক্রম হ্যান্ডলিং।

  4. জাভা ব্যতিক্রম এবং সেগুলি কীভাবে পরিচালনা করবেন