কম্পিউটার টিউটোরিয়াল

C#-এ Checked vs Unchecked এক্সেপশন (অ্যারিথমেটিক ওভারফ্লো হ্যান্ডলিং)

C#-এ ইন্টিজার অ্যারিথমেটিক ওভারফ্লো হ্যান্ডলিংয়ের জন্য checked এবং unchecked কন্টেক্স্ট/ব্লক ব্যবহার করা হয়।

Checked Context (ওভারফ্লো চেক সক্রিয়)

  • ওভারফ্লো হলে OverflowException নিক্ষেপ করা হয়।
  • কম্পাইলার অপশন /checked+ বা কোডে checked ব্লক দিয়ে সক্রিয়।

Unchecked Context (ওভারফ্লো উপেক্ষা)

  • ওভারফ্লো হলে সাইলেন্টলি র‍্যাপ-অরাউন্ড (wrap-around) হয়।
  • ডিফল্ট বিল্ড কনফিগারেশনে অনচেকড।
  • unchecked কিওয়ার্ড দিয়ে eksplisittly নিষ্ক্রিয়।

উদাহরণ: Checked


using System;

class CheckedDemo
{
    static void Main()
    {
        int max = int.MaxValue; // 2147483647
        
        try
        {
            int result = checked(max + 10); // OverflowException
            Console.WriteLine(result);
        }
        catch (OverflowException ex)
        {
            Console.WriteLine("Checked: OverflowException caught!");
            Console.WriteLine(ex.Message);
        }
    }
}

উদাহরণ: Unchecked


using System;

class UncheckedDemo
{
    static void Main()
    {
        int max = int.MaxValue; // 2147483647
        
        int result = unchecked(max + 10); // কোনো এক্সেপশন নেই
        Console.WriteLine("Unchecked result: " + result); // -2147483639 (wrap-around)
    }
}

আউটপুট


// Checked:
Checked: OverflowException caught!
Arithmetic operation resulted in an overflow.

// Unchecked:
Unchecked result: -2147483639

কখন কী ব্যবহার করবেন

পরিস্থিতিসুপারিশ
ফিনান্সিয়াল/ক্রিটিক্যাল ক্যালকুলেশনchecked (সেফটি)
হ্যাশ কোড, র‍্যান্ডম, বিট ম্যানিপুলেশনunchecked (পারফরম্যান্স)
জেনেরিক লাইব্রেরি কোডchecked (কলার ডिसাইড করুক)

নোট

  • ফ্লোটিং পয়েন্ট (float, double) ওভারফ্লো Infinity দেয়, এক্সেপশন নয়।
  • decimal সবসময় চেকড (ওভারফ্লোতে এক্সেপশন)।
  • প্রজেক্ট প্রপার্টিজ → Build → "Check for arithmetic overflow/underflow" দিয়ে গ্লোবাল সেটিং।
  1. CSS overflow: hidden

  2. CSS3-এ টেক্সট ওভারফ্লো (Text Overflow) হ্যান্ডলিং

  3. HTML <input> checked অ্যাট্রিবিউট

  4. Avast-এ এক্সেপশন যোগ করার পদ্ধতি?