خواص Exception در سی شارپ
خواص Exception در سی شارپ شامل Message، StackTrace، InnerException، Data و HelpLink است که اطلاعات دقیقی از خطا میدهند.
خواص Exception در سی شارپ
در زبان برنامهنویسی #C، Exception (یا استثناء) به خطاها یا موقعیتهای غیرمنتظرهای گفته میشود که هنگام اجرای برنامه رخ میدهند.
این خطاها ممکن است ناشی از مسائل مختلفی مانند وارد کردن دادههای نامعتبر، مشکلات ارتباط با پایگاه داده، عدم وجود یک فایل مورد نظر یا خطاهای سختافزاری باشد.
مدیریت استثناء (Exception Handling) یکی از بخشهای مهم در توسعه نرمافزار است که به برنامهنویسان کمک میکند تا برنامههای خود را قابلاعتمادتر، پایدارتر و انعطافپذیرتر بسازند.
در ادامه به بررسی جزئیات بیشتری در مورد Exception، روشهای مدیریت آن، و مفاهیم مرتبط خواهیم پرداخت.
تعریف Exception در سی شارپ
Exception در سی شارپ یک شیء است که از کلاس پایهی System.Exception مشتق میشود.
این شیء حاوی اطلاعاتی درباره خطایی است که رخ داده، مانند پیام خطا، محل وقوع خطا، و اطلاعات اضافی دیگری که میتواند به عیبیابی کمک کند.
سی شارپ برای مدیریت Exceptionها از مکانیزمهای زیر استفاده میکند:
-
ساختار try-catch
برای گرفتن و مدیریت Exceptionها. -
کلیدواژه finally
برای انجام عملیات پاکسازی یا موارد ضروری دیگر. -
کلیدواژه throw
برای تولید (پرتاب) یک 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های سفارشی ایجاد کنید.
این کار با تعریف یک کلاس جدید که از 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 ارائه میدهد:
-
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 یکی از اصول پایهای و حیاتی در برنامهنویسی سی شارپ است.
با استفاده صحیح از ابزارهای مدیریت خطا، میتوان برنامههایی نوشت که نه تنها پایدارتر هستند، بلکه تجربه کاربری بهتری را نیز ارائه میدهند.
رعایت بهترین شیوهها در این زمینه، علاوه بر کاهش خطاها، فرآیند توسعه و نگهداری نرمافزار را نیز آسانتر میکند.
در این مثال کوتاه، برنامه تلاش میکند یک فایل را بخواند.
اگر خطایی رخ دهد، اطلاعات آن (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 در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید