دسته بندی ها
21:45 1403/10/13

مدیریت خطا اختصاصی در سی شارپ توسط Try و Catch

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 697
هوش مصنوعی

پاسخ هوش مصنوعی

برای مدیریت خطا به صورت اختصاصی در C# با استفاده از بلوک های try و catch می توانید از throw برای ایجاد استثناهای سفارشی استفاده کنید. در این مثال، ما ورودی کاربر را بررسی می کنیم و اگر ورودی شرایط خاصی را نداشته باشد، خطا ایجاد می کنیم.

using System;

class Program
{
    static void Main()
    {
        try
        {
            Console.Write("لطفاً سن خود را وارد کنید: ");
            string input = Console.ReadLine();
            int age = Convert.ToInt32(input);

            if (age < 0 || age > 80)
            {
                throw new ArgumentOutOfRangeException("سن باید بین 0 و 80 باشد.");
            }

            Console.WriteLine("سن شما: " + age);
        }
        catch (FormatException)
        {
            Console.WriteLine("لطفا یک عدد صحیح وارد کنید.");
        }
        catch (ArgumentOutOfRangeException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch (Exception ex)
        {
            Console.WriteLine("خطای غیرمنتظره: " + ex.Message);
        }
    }
}

در این کد، ابتدا ورودی کاربر را خوانده و تلاش می کنیم آن را به عدد صحیح تبدیل کنیم. اگر ورودی غیر عددی باشد، یک FormatException ایجاد می شود. همچنین با استفاده از ArgumentOutOfRangeException می توانیم سن ورودی را بررسی کنیم و در صورتی که خارج از محدوده مجاز باشد، خطا مربوطه را پرتاب کنیم.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 23:58 1403/10/13

آشنایی با Exception های اختصاصی بلوک Catch

بله شما می تونید از طریق Exception های اختصاصی که برای بلوک Catch تعریف شده خطاهاتون رو اختصاصی مدیریت کنید. به عنوان مثال کدهای زیر رو دقت کنید :

try
{
   int age = Convert.ToInt32(textBox1.Text);
   Console.WriteLine($"You are {age} years old");
}
catch (OverflowException ex)
{
   //اگر عدد خیلی بزرگی وارد شد وارد این خطا نمایش داده می شود
   Console.WriteLine($"age is invalid");
}
catch (FormatException ex)
{
   //اگر رشته وارد شد این خطا نمایش داده می شود
   Console.WriteLine($"format is invalid");
}
catch (Exception ex) 
{
   //اگر خطای هندل نشده ای وجود داشت این خطا نمایش داده می شود
   Console.WriteLine($"there is an error");
}

 

همونطوری که ملاحظه می کنید یک بلوک try داریم و سه بلوک catch که در هر بلوک از catch یک حالت خاص از خطا بررسی شده است. بلوک catch آرگومان های زیادی برای مدیریت خطا دارد مانند :

//اگر خطای تقسیم بر صفر رخ داد
catch (DivideByZeroException ex)

//اگر مقداری خارج از محدوده آرایه ثبت یا واکشی شد
catch (IndexOutOfRangeException ex)

//و ...

 

شما حتی می تونید در بلوک catch از شرط هم استفاده کنید. برای اطلاعات بیشتر لینک زیر رو مطالعه کنید.

Try/Catch in C# (How It Works For Developers)

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود