Exception Handling সহ ফাইল অপারেশনস

File Handling (ফাইল হ্যান্ডলিং) - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) - Computer Programming

339

সি++ এ ফাইল অপারেশন করার সময় প্রায়শই ত্রুটি (error) হতে পারে, যেমন ফাইলটি খুঁজে পাওয়া যাচ্ছে না, ফাইল পড়তে বা লিখতে সমস্যা হচ্ছে, ইত্যাদি। সঠিকভাবে এই ত্রুটিগুলো পরিচালনা করতে Exception Handling ব্যবহৃত হয়। Exception Handling ব্যবহার করে প্রোগ্রামটিকে ত্রুটি সনাক্ত ও মোকাবিলা করার জন্য প্রস্তুত রাখা যায়। এখানে কিছু সাধারণ ফাইল অপারেশন এবং Exception Handling এর মাধ্যমে সেগুলো কিভাবে নিরাপদে পরিচালনা করা যায় তা আলোচনা করা হলো।


ফাইল অপারেশনস

সি++ এ ফাইল অপারেশনের জন্য সাধারণত fstream লাইব্রেরির ক্লাসগুলো ব্যবহৃত হয়, যেমন:

  • std::ifstream: ফাইল থেকে ডেটা পড়ার জন্য।
  • std::ofstream: ফাইলে ডেটা লেখার জন্য।
  • std::fstream: ফাইল পড়া এবং লেখা উভয়ের জন্য।

Exception Handling সহ ফাইল খোলা এবং পড়া

ফাইল খোলার সময় যদি ফাইলটি বিদ্যমান না থাকে, তবে এটি একটি সাধারণ ত্রুটি সৃষ্টি করতে পারে। Exception Handling ব্যবহার করে এই ত্রুটিগুলো ধরার চেষ্টা করা হয়।

উদাহরণ: ফাইল খোলা এবং পড়া

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream file;

    try {
        file.open("example.txt");
        
        // চেক করা হচ্ছে ফাইলটি সফলভাবে খোলা হয়েছে কিনা
        if (!file.is_open()) {
            throw std::ios_base::failure("Error opening file");
        }

        // ফাইলের ডেটা পড়া
        std::string line;
        while (std::getline(file, line)) {
            std::cout << line << std::endl;
        }

        file.close(); // ফাইল বন্ধ করা

    } catch (const std::ios_base::failure& e) {
        std::cerr << "Exception: " << e.what() << std::endl;
    }

    return 0;
}

এই উদাহরণে, ফাইল খোলার চেষ্টা করার পর চেক করা হচ্ছে যে ফাইলটি সফলভাবে খোলা গেছে কিনা। যদি না যায়, তাহলে std::ios_base::failure এর মাধ্যমে একটি Exception তৈরি করে catch ব্লকে ধরার চেষ্টা করা হয়েছে।


Exception Handling সহ ফাইলে লেখা

ফাইলে লেখার সময় যদি কোনো সমস্যা হয়, যেমন ফাইলটি লেখার জন্য প্রস্তুত নয় বা যথাযথ অনুমতি নেই, তবে Exception Handling এর মাধ্যমে এই সমস্যাগুলো নির্ণয় করা যায়।

উদাহরণ: ফাইলে লেখা

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ofstream file;

    try {
        file.open("output.txt");

        // ফাইল খোলা যাচাই
        if (!file.is_open()) {
            throw std::ios_base::failure("Error opening file for writing");
        }

        // ফাইলে ডেটা লেখা
        file << "This is a test line." << std::endl;

        file.close(); // ফাইল বন্ধ করা

    } catch (const std::ios_base::failure& e) {
        std::cerr << "Exception: " << e.what() << std::endl;
    }

    return 0;
}

এখানে, ফাইল খোলার পর is_open() চেক করে যদি ফাইল লেখার জন্য প্রস্তুত না থাকে তাহলে std::ios_base::failure Exception নিক্ষেপ করা হয় এবং এটি catch ব্লকে ধরা হয়।


Multiple Exceptions Handling

একাধিক ধরণের Exception থাকলে বিভিন্ন catch ব্লক ব্যবহার করে সেগুলো আলাদাভাবে ধরা যায়। যেমন, ফাইল পড়া, লেখা, বা অন্যান্য ইন্টারনাল ত্রুটি হলে পৃথক পৃথক catch ব্লক ব্যবহার করা যায়।

উদাহরণ: একাধিক Exception Handling

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream file;

    try {
        file.open("example.txt");

        if (!file.is_open()) {
            throw std::ios_base::failure("File not found");
        }

        // ইন্টারনাল ফাইল ত্রুটি চেক করার জন্য
        file.exceptions(std::ifstream::badbit | std::ifstream::failbit);

        std::string line;
        while (std::getline(file, line)) {
            std::cout << line << std::endl;
        }

        file.close();

    } catch (const std::ios_base::failure& e) {
        std::cerr << "File operation exception: " << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "General exception: " << e.what() << std::endl;
    }

    return 0;
}

উপরের উদাহরণে, file.exceptions() ফাংশন ব্যবহার করে ফাইল অপারেশনে কিছু নির্দিষ্ট ত্রুটি (badbit এবং failbit) চেক করা হচ্ছে। যদি কোনো সমস্যা হয়, তাহলে প্রথম catch ব্লক std::ios_base::failure এক্সসেপশন ধরবে, আর যদি অন্য কোনো সাধারণ Exception থাকে, তাহলে সেটি পরের catch ব্লক দ্বারা ধরা হবে।


Exception Handling এর সুবিধা

১. ত্রুটি সনাক্তকরণ: ফাইল অপারেশনের সময় যে কোনো সমস্যা সহজে সনাক্ত করা যায়।

২. প্রোগ্রামের স্থিতিশীলতা: Exception Handling ব্যবহার করে ত্রুটি হলে প্রোগ্রামটি অপ্রত্যাশিতভাবে বন্ধ না হয়ে সঠিকভাবে ত্রুটি মোকাবিলা করতে পারে।

৩. ডিবাগিং সহজতর: Exception Handling ব্যবহার করে ত্রুটির ধরন এবং কারণ সহজে চিহ্নিত করা যায়।


সংক্ষেপে

  • Exception Handling ফাইল অপারেশনের ত্রুটি সনাক্ত করতে সহায়ক।
  • std::ios_base::failure ব্যবহার করে ফাইল অপারেশন ত্রুটি ধরা যায়।
  • Multiple catch blocks ব্যবহার করে একাধিক ধরণের Exception আলাদাভাবে পরিচালনা করা যায়।

ফাইল অপারেশনে Exception Handling ব্যবহারের ফলে প্রোগ্রামের স্থায়িত্ব বৃদ্ধি পায় এবং ফাইল সম্পর্কিত ত্রুটি সহজে মোকাবিলা করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...