خطاها


انواع خطاها:

خطاها در برنامه نویسی به دسته های زیر تقسیم میشوند:

*خطاهای دستوری یا گرامری(syntax error)

*خطاهای منطقی (logical error)(برنامه به خوبی کار میکند ولی خروجی مورد نظر را نمیدهد)

*خطا در زمان اجرا(run time error)

*استثناها(exception)(مانند وارد کردن حروف به جای عدد) یا تقسیم به صفر یا چرخش بیش از طول ارایه

برنامه نویس بایستی با استثناهایی که ممکن است در طول اجرای یک برنامه به وجود میاید مقابله کند

همه استثناها به عنوان زیر کلاس exception تعریف شده اند

format exeption ,null pointer exeption

هر کدام از این زیر کلاسها دارای یک سری متد و متغیر در صورت نیاز است.

متغیر massage در تمام این کلاسهاوجود دارد و حاوی یک پیام پیش فرض است.

راههای مقابله با excepton:

الف:استفاده از بلوک try - catch

ب: استفاده از throw

try-catch

کد اجرایی که ممکن است در آن استثنا رخ دهد در بدنه try قرار میگیرد و در بدنه catch با آن مقابله می شود.

        try{
        دستورات
        }catch(نام استثنا){
        دستورات
        }
        
try{
    Console.WriteLine("Pleasr Enter First Number:");
    int a = Int32.Parse(Console.ReadLine());
    Console.WriteLine("Pleasr Enter Second Number:");
    int b = Int32.Parse(Console.ReadLine());
    Console.WriteLine("Sum is:" + (a + b));
}catch (FormatException f){
    Console.WriteLine("Please Enter a Number!!");
}catch(DivideByZeroException d){
    Console.WriteLine(d.Message);
}
        

نکته مهم:برنامه میتواند دارای چندین بلوک catch باشد

درصورت بروز استثنا اولین بلوک catch که با استثنا ایجاد شده همخوانی داشته باشد اجرا میشود.

throw

معمولا در زمان ایجاد متد برای مقابله با استثنا از روش throw استفاده میکنیم یعنی ایجاد یک ابجکت از استثنا ایجاد شده و به سیستم واگذار میشود.

مثال:

public static double (double a , double b)
{
    if(b==0)
      throw new System.DivideByZeroException();
    if(a==0)
      throw new System.AirthmeticException();
    return a/b;
}