خرید دوره های برنامه نویسی با کیف پولت

تعریف Exception در سی شارپ,ساختار try-catch در سی شارپ,کلاس‌های پیش‌فرض Exception در سی شارپ

خواص Exception در سی شارپ

خواص Exception در سی شارپ شامل Message، StackTrace، InnerException، Data و HelpLink است که اطلاعات دقیقی از خطا می‌دهند.

تیم تحریریه
354
0
09 آذر 1403
لینک کوتاه

خواص Exception در سی شارپ

در زبان برنامه‌نویسی #C، Exception (یا استثناء) به خطاها یا موقعیت‌های غیرمنتظره‌ای گفته می‌شود که هنگام اجرای برنامه رخ می‌دهند.

این خطاها ممکن است ناشی از مسائل مختلفی مانند وارد کردن داده‌های نامعتبر، مشکلات ارتباط با پایگاه داده، عدم وجود یک فایل مورد نظر یا خطاهای سخت‌افزاری باشد.

مدیریت استثناء (Exception Handling) یکی از بخش‌های مهم در توسعه نرم‌افزار است که به برنامه‌نویسان کمک می‌کند تا برنامه‌های خود را قابل‌اعتمادتر، پایدارتر و انعطاف‌پذیرتر بسازند.

در ادامه به بررسی جزئیات بیشتری در مورد Exception، روش‌های مدیریت آن، و مفاهیم مرتبط خواهیم پرداخت.

تعریف Exception در سی شارپ

Exception در سی شارپ یک شیء است که از کلاس پایه‌ی System.Exception مشتق می‌شود.

این شیء حاوی اطلاعاتی درباره خطایی است که رخ داده، مانند پیام خطا، محل وقوع خطا، و اطلاعات اضافی دیگری که می‌تواند به عیب‌یابی کمک کند.

سی شارپ برای مدیریت Exceptionها از مکانیزم‌های زیر استفاده می‌کند:

  • ساختار try-catch

    برای گرفتن و مدیریت Exceptionها.
  • کلیدواژه finally

    برای انجام عملیات پاکسازی یا موارد ضروری دیگر.
  • کلیدواژه throw

    برای تولید (پرتاب) یک Exception.
  • کلاس‌های مربوط به Exception

    برای تعریف خطاهای خاص.

تعریف Exception در سی شارپ

ساختار try-catch در سی شارپ

برای مدیریت خطاها، از بلوک‌های try و catch استفاده می‌شود.

کدهایی که ممکن است خطا ایجاد کنند، در بلوک try قرار می‌گیرند.

اگر خطایی رخ دهد، جریان کنترل به بلوک catch منتقل می‌شود.

قالب کلی:

try
{
    // کدی که ممکن است Exception تولید کند
}
catch (Exception ex)
{
    // مدیریت خطا
    Console.WriteLine($"خطا رخ داده است: {ex.Message}");
}
finally
{
    // عملیات پاکسازی (اختیاری)
}

 

مثال ساده:

try
{
    int number = int.Parse("not_a_number");
    Console.WriteLine(number);
}
catch (FormatException ex)
{
    Console.WriteLine($"خطای قالب: {ex.Message}");
}


در این مثال، تلاش برای تبدیل یک رشته نامعتبر به عدد موجب رخ دادن یک Exception از نوع FormatException می‌شود.

 

 

🌟 آیا به دنبال یک فرصت عالی برای یادگیری برنامه‌نویسی هستید؟ 🚀

با دوره آموزشی سی‌شارپ ما، شما می‌توانید مهارت‌های خود را به سطح جدیدی ارتقا دهید! این دوره به‌طور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامه‌نویسی سی‌شارپ پیش بروید.

👨‍🏫 چرا دوره ما را انتخاب کنید؟

  • محتوای جامع و عملی: با پروژه‌های واقعی و تمرینات عملی، یادگیری را به تجربه‌ای جذاب تبدیل کنید.
  • مدرس مجرب: از تجربه و دانش مدرس حرفه‌ای بهره‌مند شوید که شما را در هر مرحله از یادگیری راهنمایی می‌کنند.
  • پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
  • دسترسی مادام‌العمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، می‌توانید به آن مراجعه کنید.

💡 فرصت را از دست ندهید!

بایادگیری سی‌شارپ، می‌توانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژه‌های جذاب و چالش‌برانگیز شرکت کنید.

همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده‌ای روشن‌تر بردارید!

شرکت در دوره آموزش برنامه نویسی سی شارپ

 

کلیدواژه finally

بلوک finally همیشه اجرا می‌شود، چه خطایی رخ دهد یا نه.

از این بلوک برای انجام عملیات پاکسازی، مانند بستن فایل‌ها یا آزادسازی منابع استفاده می‌شود.

مثال:

StreamReader reader = null;
try
{
    reader = new StreamReader("file.txt");
    string content = reader.ReadToEnd();
    Console.WriteLine(content);
}
catch (FileNotFoundException ex)
{
    Console.WriteLine($"فایل یافت نشد: {ex.Message}");
}
finally
{
    if (reader != null)
        reader.Close();
    Console.WriteLine("منابع آزاد شدند.");
}

تولید Exception با throw

با استفاده از کلمه کلیدی throw می‌توان یک Exception جدید ایجاد کرد یا یک Exception موجود را مجدداً پرتاب کرد.

مثال:

void Divide(int a, int b)
{
    if (b == 0)
        throw new DivideByZeroException("تقسیم بر صفر مجاز نیست.");
    Console.WriteLine(a / b);
}

try
{
    Divide(10, 0);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine(ex.Message);
}

 

 

 

"با دوره‌های تخصصی سی شارپ ما، مهارت‌هایی کسب کنید که شما را به یک برنامه‌نویس حرفه‌ای و مورد تقاضا در بازار تبدیل می‌کند!"

برای آموزش کامل و جامع خواص Exception در سی شارپ از اینجا وارد بخش دوره آموزشی ما شوید

 

 


کلاس‌های پیش‌فرض Exception در سی شارپ

سی شارپ دارای مجموعه‌ای از کلاس‌های داخلی برای مدیریت انواع خطاهاست. برخی از این کلاس‌ها عبارتند از:

  • System.Exception

    کلاس پایه برای تمام Exceptionها.
  • System.IO.IOException

    برای خطاهای ورودی/خروجی.
  • System.IndexOutOfRangeException

    برای دسترسی غیرمجاز به اندیس‌های آرایه.
  • System.NullReferenceException

    برای ارجاع به شیء null.
  • System.DivideByZeroException

    برای تقسیم بر صفر.
  • System.InvalidOperationException

    برای عملیات نامعتبر.
  • System.ArgumentException

    برای آرگومان‌های نامعتبر.
  • System.NotSupportedException

    برای قابلیت‌هایی که پشتیبانی نمی‌شوند.

 

 

کلاس‌های پیش‌فرض Exception در سی شارپ

شخصی‌سازی Exception در سی شارپ

گاهی اوقات نیاز است که Exceptionهای سفارشی ایجاد کنید.

این کار با تعریف یک کلاس جدید که از System.Exception مشتق شده است انجام می‌شود.

مثال:

public class MyCustomException : Exception
{
    public MyCustomException(string message) : base(message) { }
}

try
{
    throw new MyCustomException("این یک خطای سفارشی است.");
}
catch (MyCustomException ex)
{
    Console.WriteLine(ex.Message);
}


مدیریت Exception‌های چندگانه

در برخی موارد ممکن است چند نوع خطا در یک بلوک رخ دهد.

سی شارپ اجازه می‌دهد که بلوک‌های catch مختلف برای انواع خاصی از Exceptionها تعریف شود.

مثال:

try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]);
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine($"خطای اندیس: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"خطای عمومی: {ex.Message}");
}


اهمیت مدیریت Exception

مدیریت درست Exceptionها مزایای متعددی دارد:

  • افزایش پایداری برنامه

    با مدیریت خطاها، برنامه دچار توقف ناگهانی نمی‌شود.
  • عیب‌یابی آسان‌تر

    پیام‌ها و جزئیات Exception به توسعه‌دهنده در پیدا کردن و رفع مشکل کمک می‌کند.
  • تجربه کاربری بهتر

    پیام‌های خطای مناسب به کاربر نشان داده می‌شود، و از نمایش خطاهای ناخواسته جلوگیری می‌شود.


اصول بهترین عملکرد در مدیریت Exception

  • حداقل استفاده از Exceptionها

    از Exceptionها برای شرایط غیرمنتظره استفاده کنید، نه برای منطق برنامه.
  • پیام‌های مفید

    پیام‌های خطا باید گویا باشند و اطلاعات کافی ارائه دهند.
  • پاکسازی منابع

    همیشه از بلوک finally یا الگوی using برای آزادسازی منابع استفاده کنید.
  • استفاده از Exceptionهای خاص

    به جای استفاده از Exception عمومی، از Exceptionهای خاص و مناسب استفاده کنید.
  • عدم افشای اطلاعات حساس

    پیام‌های خطا نباید اطلاعات حساس مانند مسیرهای فایل یا جزئیات سرور را فاش کنند.

 

اصول بهترین عملکرد در مدیریت Exception


ابزارهای تکمیلی در مدیریت Exception

سی شارپ ابزارهای دیگری نیز برای بهبود مدیریت Exception ارائه می‌دهد:

  • InnerException

    برای نگهداری جزئیات یک Exception داخلی.
try
{
    try
    {
        throw new ArgumentException("خطای داخلی");
    }
    catch (Exception ex)
    {
        throw new InvalidOperationException("خطای خارجی", ex);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"پیام: {ex.Message}, خطای داخلی: {ex.InnerException?.Message}");
}
  • StackTrace

    برای بررسی مسیر اجرای برنامه هنگام رخ دادن خطا.

 

try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]);
}
catch (Exception ex)
{
    Console.WriteLine(ex.StackTrace);
}

 

  • Data Property

    برای افزودن اطلاعات اضافی به یک Exception.

 

try
{
    throw new Exception("خطا رخ داده است");
}
catch (Exception ex)
{
    ex.Data["Time"] = DateTime.Now;
    ex.Data["User"] = "Admin";
    Console.WriteLine($"اطلاعات اضافی: {ex.Data["Time"]}, {ex.Data["User"]}");
}

 


مدیریت Exception یکی از اصول پایه‌ای و حیاتی در برنامه‌نویسی سی شارپ است.

با استفاده صحیح از ابزارهای مدیریت خطا، می‌توان برنامه‌هایی نوشت که نه تنها پایدارتر هستند، بلکه تجربه کاربری بهتری را نیز ارائه می‌دهند.

رعایت بهترین شیوه‌ها در این زمینه، علاوه بر کاهش خطاها، فرآیند توسعه و نگهداری نرم‌افزار را نیز آسان‌تر می‌کند.

 

مثال پروژه محور  از خواص Exception در سی شارپ

در این مثال کوتاه، برنامه تلاش می‌کند یک فایل را بخواند.

اگر خطایی رخ دهد، اطلاعات آن (Message و StackTrace) ذخیره می‌شود.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        try
        {
            // تلاش برای خواندن یک فایل
            string content = File.ReadAllText("nonexistent_file.txt");
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            // نمایش اطلاعات خطا
            Console.WriteLine($"پیام خطا: {ex.Message}");
            Console.WriteLine($"مسیر خطا: {ex.StackTrace}");

            // ثبت خطا در فایل لاگ
            File.AppendAllText("error_log.txt", 
                $"زمان: {DateTime.Now}\nپیام: {ex.Message}\nمسیر: {ex.StackTrace}\n\n");
        }
    }
}


توضیحات:

  • Message: پیام خطا را نمایش می‌دهد.

  • StackTrace: مسیر رخ دادن خطا را نشان می‌دهد.

خطاها در فایل error_log.txt ثبت می‌شوند تا برای رفع مشکلات در آینده بررسی شوند.

 

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “خواص Exception در سی شارپ” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو