مدیریت خطا در #c
شناسه پست: 1913
بازدید: 1034

در این مقاله، ما یاد میگیریم که چطور از بلاکهای try-catch استفاده کنیم درحالیکه exception ها را در #C مدیریت میکنیم. علاوه بر این، یاد میگیریم که چطور از چند بلاک catch برای handle کردن exception های بیشتری در کدهایمان استفاده کنیم.

این مقاله، سرفصلی از دوره آموزشی زیر میباشد:

اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.

اگر میخواهید کد سورس مثالهای این مقاله را دانلود کنید اینجا کلیک کنید.

این مقاله شامل موضوعات زیر میباشد:

Exception چیست؟

exception یک مشکلی است که در حالیکه در حل توسعه پروژه هستیم به صورت غیرمنتظره در کدهایمان رخ میدهد. به این دلیل است که ما این exception ها را exception های handle نشده مینامیم. اگر این exception ها handle نشوند در نتیجه اپلیکیشن ما از کار می افتد و یک پیغام خطا throw میکند. ما نمیخواهیم همچین اتفاقی رخ دهد.

بلاک Try-Catch

#C یک پشتیبانی توکار برای handle کردن این exception ها با استفاده از بلاک try-catch در اختیار ما قرار میدهد:

در بلاک try، ما کدهایمان را مینویسیم و بلاک catch، تمام exception هایی که امکان دارد در بلاک try اتفاق بیفتد را handle میکند. با این شیوه، برنامه ما اصلا stop نمیشود و ما میتوانیم پیغامهای معناداری را به کاربر نمایش دهیم.

ببینیم برنامه ما چطور با handle کردن و بدون handle کردن exception ها کار میکند.

مثال 1: یک برنامه ای بنویسید که یک عدد صحیح از کاربر گرفته و جذر آن را در خروجی چاپ نماید:

این کد فقط در صورتی درست کار میکند که کاربر یک عدد صحیح وارد نماید. اما ببینید که چه اتفاقی می افتد اگر کاربر به جای عدد یک رشته وارد کند:

exception مدیریت نشده در #C

ما میبینیم که در این حالت، اپلیکیشن ما متوقف شده است. این اتفاق به عنوان یک تجربه کاربری خیلی ناخوشایند است. حالا اجازه بدید همین کد را اینبار با بلاک try-catch پیاده سازی کنیم:

اگر حالا نتیجه را بررسی کنیم:

exception مدیریت شده در #C

همانطور که میبینیم، برنامه ما در این حالت متوقف نشده است و یک پیام با مفهوم برای کاربرمان داریم که یک تجربه کاربری بهتری را نسبت به مثال قبلی ارائه میدهد.

Exception های ویژه

#C مجموعه exception های خاص خودش را دارد که ما میتوانیم در در اپلیکیشنمان استفاده کنیم. تعدادی از آنها عبارتند از: NullReferenceException، ArgumentOutOfRangeException، InvalidCastException، FileNotFoundException، DevideByZeroException، FormatException، InvalidOperationException و غیره.

ما میتوانیم آنها را به این صورت استفاده کنیم:

این خیلی مهم است که بلاکهای catch ویژه را قبل از بلاک catch عمومی قرار دهیم در غیر اینصورت کامپایلر ما خطای زیر را خواهد گرفت:

exception غیرمعتبر #C

نتیجه گیری

بسیار عالی

حالا ما میدانیم که چطور یک کد امن بنویسیم و چطور خطاها را در اپلیکیشنمان handle کنیم.

در مقاله بعدی، ما در مورد Access Modifier ها در #C صحبت میکنیم.

نویسنده

امید عباسی
من امید عباسی هستم. سالهاست که در زمینه برنامه نویسی با تکنولوژی دات نت فعالیت میکنم و عاشق این هستم که تجربیات و دانش خودم را در این زمینه با دیگران به اشتراک بزارم. خیلی دوست دارم که نظر و انتقاد خودتون رو در مورد این نوشته برای من بنویسید تا بتونم در آینده، مطالب بهتر و ارزشمندتری را برای شما فراهم کنم. در صورت داشتن هرگونه سوال هم در قسمت دیدگاه ها میتونید با بنده در ارتباط باشید