C:
ত্রুটিগুলি পরিচালনা করা

কিভাবে:

C তে অন্যান্য ভাষার মতো বিল্ট-ইন এক্সেপশন সমর্থন নেই। বরং, এটি ফাংশন থেকে বিশেষ মান ফেরত পাঠানো এবং errno এর মতো বৈশ্বিক ভেরিয়েবল সেট করার মতো কয়েকটি প্রচলিত ত্রুটি সমাধান কৌশলের উপর নির্ভর করে।

বিশেষ মান ফেরত পাঠানো

ফাংশন গুলি বৈধ ফলাফল হতে বিরল কোনো নির্দিষ্ট মান ফেরত দিয়ে ত্রুটি নির্দেশ করতে পারে। এখানে integer নিয়ে একটি উদাহরণ দেওয়া হলঃ

#include <stdio.h>

int inverse(int number, double *result) {
    if (number == 0) {
        return -1; // ত্রুটির কেস
    } else {
        *result = 1.0 / number;
        return 0; // সফলতা
    }
}

int main() {
    double result;
    if (inverse(0, &result) < 0) {
        printf("Error: Division by zero.\n");
    } else {
        printf("The inverse is: %f\n", result);
    }
    
    return 0;
}

আউটপুট:

Error: Division by zero.

errno চেক করা

লাইব্রেরি ফাংশনগুলির ক্ষেত্রে, বিশেষত সিস্টেম বা ওএসের সাথে ইন্টার্য়াক্ট করার মতো (যেমন ফাইল I/O), কোনো ত্রুটি ঘটলে errno সেট করা হয়। এটি ব্যবহার করতে, errno.h অন্তর্ভুক্ত করুন এবং সন্দেহজনক ব্যর্থতার পর errno চেক করুন:

#include <stdio.h>
#include <errno.h>
#include <string.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    if (file == NULL) {
        printf("Error opening file: %s\n", strerror(errno));
    }
    
    return 0;
}

আউটপুট:

Error opening file: No such file or directory

গভীর ডুব

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

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

এর কেড়ে নেওয়া সত্ত্বেও, C এ এই ম্যানুয়াল ত্রুটি সমাধান অনেক অন্যান্য ভাষার ত্রুটি ব্যবস্থাপনার নকশা চিন্তাভাবনায় অবদান রেখেছে, যেখানে ত্রুটি শর্তাদির স্পষ্টতা আরও পূর্বাভাসযোগ্য এবং ডিবাগেবল কোড লিড করতে পারে। যেখানে ব্যর্থতা সুন্দরভাবে ব্যবস্থাপনা করা অত্যাবশ্যক, সেখানে C এর ত্রুটি সমাধান ধারণা—সঙ্গে আধুনিক সেরা অনুশীলনগুলি যেমন ত্রুটি সমাধান লাইব্রেরিগুলি এবং কনভেনশনগুলি—নির্ভরযোগ্যতা এবং দৃঢ়তা নিশ্চিত করে।