کلاس Exception و انواع آن – دستور try catch

در این مطلب می خوایم بحث Error Handeling را توضیح بدهیم امیدوارم به برنامه نویسیتون کمک کند.

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

خطاهای در زمان کامپایل:

try1

 

همانطور که در عکس مشاهده می فرمایید این نوع خطاها بیشتر به دلیل اشتباهات دستوری و Syntax اتفاق می افتد که خطاهای زمان کامپایل نامیده می شود. این نوع خطاها جدی گرقته نمی شود به این خاطر که تاثیری در برنامه های شما ندارد.

خطاهای در زمان اجرا:

try2

 

دلایل زیادی در رخ دادن این نوع خطاها وجود دارد پیاده سازی اشتباه به صورت منطقی ، داده های غیر منتظره و نبود منابع لازم و … این نوع خطاها  باید جدی گرفته شوند چون به طور مستقیم در برنامه تاثیر دارند و موجب بستن برنامه می شود.


 کلاس Exception :
مسئول پایان غیر عادی برنامه می باشد وقتی که خطایی در حین اجرا اتفاق رخ می دهد. آبجکتی از این کلاس مسئول خاتمه غیر عادی برنامه می باشد و پیغام خطایی در مکانی که دلیل خاتمه برنامه است ، نشان می دهد .
انواع Exception : دو نوع Exception داریم:

  1. System Exception

این نوع خطاها از پیش تعریف شده است یعنی توسط دات نت شناخته شده است و خود vs آن را تشخیص داده و در هنگام خطا نوعش رو مشخص می کند. مانند :

DivideByZeroException

هنگامی که بخواهیم عددی را بر صفر تقسیم کنیم

FormatException

در هنگام تبدیل نوع های سی شارپ به یکدیگر . مثلا مقدار رشته ایی را به عدد تبدیل ماییم.

OverFlowException

وقتی که سرریز اتفاق بیفتد مثلا نوع byte عدد 260 را درونش بریزید.

NullReference Exception

مثلا متغییری که داخلش null باشد و بخواهیم در شرط ازش استفاده کنیم.

اگر موافق باشین هر کدام از این خطاها رو در مطالب جداگونه با مثال تشریح کنم. اگه موافق هستین، مطلب رو  لایک کنین.
  1. Application Exception

این نوع ها به صراحت توسط برنامه نویس  با یه شرط خاص ایجاد می شود .

  • مثالی از این نوع میتوان اشاره ایی به  “User Defind Exception”  کرد.

 


مدیریت کردن Exception ها :
وقتی که برنامه شما در اثر رخ دادن Exception  متوقف شود کدهای باقی مانده در برنامه نمی توانند اجرا شوند.

اگر ما بخواهیم مدیریت کنیم این خطاها رو اولاً باید از متوقف شدن برنامه جلوگیری کنیم بعد برای حل این مشکل ، عملیات لازم را انجام دهیم.

برای این کار و جلوگیری از خطاهای زمان اجرا از دستور try catch استفاده می کنیم.

شکل کلی (syntax) دستور :

Try
{
    // دستوراتی که باعث خطا می شوند.
}
    Catch( <Exception> <var>)
{
    // دستوراتی که بعد از بروز خطا باید اجرا شوند.
}
  •  قسمت هایی را که احتمال می دهیم که خطایی رخ بده را در بلوک try می نویسیم .
  • روند مدیریت کردن خطاهای try در بلوک های catch صورت می گیرد.
  • یه بلوک دیگه ایی وجود دارد که آن Finally می باشد . چه خطا رخ بده چه رخ ندهد این بلوک اجرا می شود.

 


مثالی از مدیریت کردن خطاها و Exception :

 

 try
            {

                Console.WriteLine("please enter first number : ");
                int x= int.Parse(Console.ReadLine());
                Console.WriteLine("please enter second number : ");
                int y= int.Parse(Console.ReadLine());
                int resualt=x / y;
            }
            catch (DivideByZeroException ex1)
            {
                Console.WriteLine("DivideByZeroException is occured");
            }
            catch (FormatException ex2)
            {
                Console.WriteLine("FormatException is occured");
            }
            catch (Exception ex)
            {
                Console.WriteLine("error message. www.softsaaz.ir");
            }
            finally
            {
                Console.WriteLine("The block finally is run ...");
            }
            Console.ReadLine();

حالا به برنامه ورودی می دهیم مثلا

  1.   x=5 , y= 0

خروجی :

DivideByZeroException is occured
The block finally is run ...
  1.  x= 5 y= softsaaz

خروجی :

FormatException is occured
The block finally is run ...

 

  1.  x=10 y= 20000000000000000000000

خروجی :

error message. www.softsaaz.ir
The block finally is run ...

 

دانلود سورس برنامه

 

منبع : سافت ساز

طراحی آشپزخانه کلاسیک

سیوان رحمتی

از همون دوران دبیرستان ، تو فکر داشتن کسب و کار اینترنتی بودم و همیشه آرزوم بود سایتی پر مخاطب داشته باشم ، عاشق تولید محتوام و کارشناسی کامپیوتر خوندم . فعلا مشغول عملی کردن ایده هام هستم ☺️، به نظرم خیلی تاثیر گذار و قدرتمند ظاهر شدیم ، امیدواریم با کمک شما مخاطبین عزیز بتونیم خدمات متمایزتری ارائه بدیم.

‫2 نظرها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن