৬-৭ঃ Error Handling

এই মডিউলে আমারা দেখবো কীভাবে কোনো একটি Invalid ইনপুটের জন্য আমাদের কোড যাতে Crash না করে ঐ পদক্ষেপ গুলা নেয়া যায়। Error 1 : Insert At Any Position এ এমন একটি পজিশন এ Node এড করতে চাওয়া যেখানে Node insert করা যাবে না। যেমনঃ 3 সাইজের একটি Linked list এর ১০ তম পজিশনে Node Insert করা। এই ক্ষেত্রে segmentation fault হয়ে আমাদের crash হয়ে যায়।

Handling : এই ক্ষেত্রে আমরা যদি দেখি Temp shift হতে হতে এক সময় Null এ চলে গেছে অর্থাৎ Invalid index এ চলে যায় , আমরা ঐখানে লুপ থামিয়ে দিয়ে Invalid index বলে দিবো।

void insert_at_position(Node *&head, int index, int value)
{

    Node *newNode = new Node(value); // নতুন Node বানিয়ে নিলাম 

    Node *temp = head; // temp পয়েন্টার এ head রেখে দিলাম 

    for (int i = 1; i <= index - 1; i++)
    {
        temp = temp->next;
        if(temp==NULL){
        cout << "Invalid Index" << endl ;
        return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
       } 
    }
   
    newNode->next = temp->next; 
    temp->next = newNode; 
}

Error 2 : Delete At Any Position এ এমন একটি পজিশন এ Node Delete করতে চাওয়া যেখানে কোনো Node ই নেই। যেমনঃ 3 সাইজের একটি Linked list এর ১০ তম পজিশনে Node delete করা। এই ক্ষেত্রে segmentation fault হয়ে আমাদের crash হয়ে যায়। ঠিক আগের প্রবলেমের মতো। তা ছাড়া ও আমরা লুপ শেষ হয়ে যদি শেষ Index এ চলে আসি , এবং এই Node এর সাথে Next index কানেক্ট করতে চাই , তবে সেখানে কোনো Node থাকবে না , কারণ আমি already শেষ Node এই আছি। এটিও segmentation fault আসবে।

Handling : আগের মতো এই ক্ষেত্রে আমরা যদি দেখি Temp shift হতে হতে এক সময় Null এ চলে গেছে অর্থাৎ Invalid index এ চলে যায় , আমরা ঐখানে লুপ থামিয়ে দিয়ে Invalid index বলে দিবো। দ্বিতীয় ইরর এর জন্য আমরা চেক করে দেখবো temp node এর next এর next এ NULL আছে কিনা। NULL থাকলে এটি Invalid index.

void delete_at_position(Node *&head, int position)
{

    Node *temp = head;

    for (int i = 1; i <= position - 1; i++) 
    {
        temp = temp->next;
         if(temp==NULL){
        cout << "Invalid Index" << endl ;
        return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
       } 
    }
     if(temp->next==NULL){ // দ্বিতীয় error টি handle করা হচ্ছে। 
        cout << "Invalid Index" << endl ;
        return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
       } 
    Node* delete_node = temp->next;  
    temp->next = temp->next->next;  
    delete delete_node; 
}

Error 3: Delete head এর ক্ষেত্রে LInkded List যদি খালি হয়ে থাকে , তবে সেই ক্ষেত্রে head delete করলে segmentation fault হবে।

Handling : এই ক্ষেত্রে আমরা যদি দেখি head নেই /Null. অর্থাৎ লিঙ্কড লিস্ট খালি , তবে সেইক্ষেত্রে Invalid Index প্রিন্ট করে ফাংশন অফ করে দিবো।

void delete_head(Node *&head){

   if(head == NULL) { //  লিঙ্কড লিস্ট খালি
      cout << "Linked List is empty" << endl ;
        return ;
    }
   
    Node* delete_node = head; // Delete_node এ head কে স্টোর করে রাখলাম
    head = head->next; //head এ head->next স্টোর করে রাখি 
    delete delete_node; // delete_node কে delete করে দিলাম 
}

Last updated