خطاها در برنامه نویسی به دسته های زیر تقسیم میشوند:
*خطاهای دستوری یا گرامری(syntax error)
*خطاهای منطقی (logical error)(برنامه به خوبی کار میکند ولی خروجی مورد نظر را نمیدهد)
*خطا در زمان اجرا(run time error)
*استثناها(exception)(مانند وارد کردن حروف به جای عدد) یا تقسیم به صفر یا چرخش بیش از طول ارایهبرنامه نویس بایستی با استثناهایی که ممکن است در طول اجرای یک برنامه به وجود میاید مقابله کند
همه استثناها به عنوان زیر کلاس exception تعریف شده اند
format exeption ,null pointer exeption
هر کدام از این زیر کلاسها دارای یک سری متد و متغیر در صورت نیاز است.
متغیر massage در تمام این کلاسهاوجود دارد و حاوی یک پیام پیش فرض است.
راههای مقابله با excepton:
الف:استفاده از بلوک try - catch
ب: استفاده از throw
کد اجرایی که ممکن است در آن استثنا رخ دهد در بدنه 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); }
معمولا در زمان ایجاد متد برای مقابله با استثنا از روش 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; }