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

কিভাবে:

Rust ত্রুটি সামলায় দুটি প্রধান উপায়ে: পুনরুদ্ধারযোগ্য এবং অপুনরুদ্ধারযোগ্য ত্রুটি। দেখা যাক উভয়কে।

পুনরুদ্ধারযোগ্য ত্রুটি Result<T, E> ব্যবহার করে:

use std::fs::File;

fn open_file(filename: &str) -> Result<File, std::io::Error> {
    let f = File::open(filename);
    
    match f {
        Ok(file) => Ok(file),
        Err(e) => Err(e),
    }
}

fn main() {
    match open_file("hello.txt") {
        Ok(_file) => println!("ফাইল সফলভাবে খোলা হয়েছে।"),
        Err(_e) => println!("ফাইল খুলতে ব্যর্থ হয়েছে।"),
    }
}

আউটপুট হতে পারে “ফাইল সফলভাবে খোলা হয়েছে।” অথবা “ফাইল খুলতে ব্যর্থ হয়েছে।” আপনার hello.txt এর উপর নির্ভর করে।

অপুনরুদ্ধারযোগ্য ত্রুটির জন্য, আমরা panic! ব্যবহার করি:

fn main() {
    // এটি প্রোগ্রামটিকে প্যানিক করাবে কারণ ফাইলটি সম্ভবত অস্তিত্বে নেই।
    let _f = File::open("nowhere.txt").unwrap();
}

এটা চালান, এবং আপনি একটি প্যানিক বার্তা দেখতে পাবেন। আপনার প্রোগ্রাম সরাসরি থেমে যাবে।

গভীর ডুব

ঐতিহাসিকভাবে, প্রোগ্রামিংয়ে ত্রুটি সামলানো একটি জটিল ব্যাপার হয়ে উঠেছিল। Rust এটি ঠিক করে দেয় পুনরুদ্ধারযোগ্য এবং অপুনরুদ্ধারযোগ্য ত্রুটির মধ্যে স্পষ্ট পার্থক্য এনে।

Result ইনাম পুনরুদ্ধারযোগ্য ত্রুটির জন্য। এটি স্পষ্ট – আপনি Ok বা Err ভ্যারিয়েন্ট সামলান। আপনার কাছে unwrap() এবং expect() মতো পদ্ধতিগুলোও আছে, কিন্তু সেগুলো দ্রুত এবং নোংরা শর্টকাট যা panic! এ পরিণত হতে পারে।

panic! হল Rust’s এর উপায় বলতে যে কিছু সত্যি খারাপ ঘটেছে, এবং এটা সামলাতে পারছে না। এটি এমন একটি অপুনরুদ্ধারযোগ্য ত্রুটি যা সাথে সাথে নির্বাহ বন্ধ করে দেয়। Rust এ প্যানিক প্রায়শই অনুভূত হয় যে ত্রুটিগুলোর সম্মুখীন হওয়ার কথা আপনি ভাবেননি, যেমন অ্যারের সীমার বাইরে সূচনা।

Result দ্বারা ত্রুটি হ্যান্ডলিং পছন্দনীয় যখন আপনি ত্রুটি সম্মুখীন হতে প্রত্যাশা করেন। এটি ঐতিহ্যগত Rust, যার মানে হল এটি Rust ডেভেলপারদের করার ঐক্যমত্য উপায়। Option<T> ও আছে, যখন একটি ত্রুটি কেবল None বলে বিবেচনা করা হয় পরিবর্তে Some(T)। এটি সব কিছু অপ্রত্যাশিত ছাড়াই মোকাবেলা করার ব্যাপা�