با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبل با کلاس FileInfo که برای کار با فایل ها بود ، آشنا شدید. در این بخش قصد داریم شما را با استثناء ها در زبان #C و کلاس پایه Exception آشنا کنیم.
در یک برنامه ممکن است خطایی در هنگام اجرای رخ دهد. هنگامی که یک خطا رخ می دهد، CLR یا کد برنامه، استثنائی را که حاوی اطلاعات لازم در مورد خطا است برمی گرداند. دو نوع استثناء در Net. وجود دارد، استثنائات ایجاد شده در هنگام اجرای برنامه و استثنائات ایجاد شده توسط CLR.
#C برای هر استثنا شامل کلاس های ساخته شده ای است. تمام کلاس های استثناء به طور مستقیم یا غیر مستقیم از کلاس Exception حاصل می شوند.
دو کلاس اصلی برای استثنا وجود دارد – SystemException و ApplicationException.
SystemException یک کلاس پایه برای تمام خطاهای تولید شده CLR است در حالی که ApplicationException به عنوان یک کلاس پایه برای همه استثنائات مربوط به برنامه عمل می کند که می خواهید بر نقض قوانین برنامه افزوده شود.
شکل زیر سلسله مراتب برخی از کلاس های استثناء در Net. است:
همانطور که در شکل بالا می بینید، کلاس SystemException یک کلاس پایه برای تمام استثناءهایی است که می توانند در طول اجرای برنامه رخ دهند. هیچ کلاس دیگری به طور پیش فرض به کلاس ApplicationException ربطی ندارد، زیرا شما به عنوان یک برنامه نویس باید این کلاس را ایجاد کنید تا طبق قوانین برنامه خود کلاسهای اجرایی خود را نیز ایجاد کنید.
زمانی که بخواهیم از مقادیر شی ای که خالی است استفاده کنیم NullReferenceException در حالت اشکال زدایی Visual Studio برگشت داده می شود، همانند شکل زیر :
جدول زیر فهرست کلاس های Exception مهم موجود در Net. را لیست می کند.
توضیحات | Exception |
هنگامی رخ میدهد که آرگومانی به یک متدی ارسال شود که نامعتبر است | ArgumentException |
هنگامی رخ میدهد که آرگومان مقدار Null را به متد ارسال می کند. | ArgumentNullException |
هنگامی رخ میدهد که مقدار یک آرگومان خارج از محدوده مقادیر معتبر است . | ArgumentOutOfRangeException |
هنگامی رخ میدهد که مقدار عدد صحیح به صفر تقسیم می شود . | DivideByZeroException |
هنگامی رخ میدهد که یک فایل فیزیکی در مکان مشخص شده وجود نداشته باشد. | FileNotFoundException |
هنگامی رخ میدهد که یک مقدار در قالب مناسب برای تبدیل نوع با یک متد تبدیل مانند Parse نا معتبر است. | FormatException |
هنگامی رخ میدهد که یک عنصر آرایه خارج از مرز پایین یا بالایی (lower or upper bounds) یک آرایه یا مجموعه است. | IndexOutOfRangeException |
هنگامی رخ میدهد که فراخوانی یک متد در یک حالت خاص از شیء نامعتبر باشد | InvalidOperationException |
هنگامی رخ میدهد که بخواهیم انواع ناسازگار را تبدیل نوع کنیم. | InvalidCastException |
هنگامی رخ میدهد که کلید مشخص شده برای دسترسی به یک عنصر در مجموعه وجود نداشته باشد. | KeyNotFoundException |
هنگامی رخ میدهد که یک متد یا عملیات پشتیبانی نشود. | NotSupportedException |
هنگامی رخ میدهد که برنامه به شی ای خالی برمیخورد. | NullReferenceException |
هنگامی رخ میدهد که عملیات ریاضی، casting یا تبدیل موجب سرریز شدن می شود. | OverflowException |
هنگامی رخ میدهد زمانی که یک برنامه حافظه کافی برای اجرای کد ندارد. | OutOfMemoryException |
هنگامی رخ میدهد که یک پشته در حافظه سرریز شود. | StackOverflowException |
هنگامی رخ میدهد فاصله زمانی اختصاص داده شده به یک عملیات منقضی شده باشد. | TimeoutException |
هر کلاس exception در Net. به کلاس پایه Exception مرتبط است. کلاس پایه Exception شامل ویژگی های مهم زیر است که می توانید از آنها برای کسب اطلاعاتی در مورد استثناء استفاده کنید.
توضیحات | پراپرتی |
جزئیات مربوط به علت استثناء را ارائه می دهد. | Message |
اطلاعاتی مربوط به اینکه خطا در کجا اتفاق افتاده را ارائه می دهد. | StackTrace |
اطلاعاتی مربوط به مجموعه ای از استثنائات که ممکن است رخ داده باشد را فراهم می کند. | InnerException |
توسط این ویژگی می تواند آدرس Help را برای یک استثناء خاص نگه دارد. | HelpLink |
این ویژگی می تواند داده های دلخواه را در عنصرهای تشکیل شده از جفت های کلید – مقدار (key-value pairs) نگهداری کند. | Data |
نام متدی که استثناء در آن اتفاق افتاده را ارائه میدهد. | TargetSite |
در این بخش با Exception در زبان #C آشنا شدید.
در قسمت بعدی قصد داریم با نحوه کار با Exception ها در زبان #C را بررسی کنیم.
alireza
اقا انصافا دمتون گرم همین جوری با قدرت ادامه بدین. مطالبتون عالی و جامع هست خسته نباشید