چند روش کاربردی برای مدیریت خطاها در C#

آموزش برنامه نویسی

چند روش کاربردی برای مدیریت خطاها در C#

مهم نیست که برنامه نرم افزاری شما چقدر کارآمد اجرا می شود، یک استثنا به دلیل کد بد می تواند برنامه را خراب کند و حتی برای میلیون ها کاربر از دسترس خارج شود. به همین دلیل است که رسیدگی به استثناها یک نیاز حیاتی برای هر کدی است. این مقاله بهترین روش هایی را که باید هنگام مدیریت استثناها در سی شارپ دنبال کنید، توضیح می دهد.

سی شارپ چندین راه برای رسیدگی به استثناها مانند بلوک‌های try-catch، چندین بلوک try-catch و استثناهای سفارشی تعریف شده توسط کاربر ارائه می‌کند. در اینجا برخی از بهترین روش هایی که باید برای ایجاد یک برنامه کاربردی خوب دنبال کنید، آورده شده است.

Handling چیست؟

یک استثنا خطایی است که در حین اجرای برنامه رخ می دهد و جریان یا اجرای عادی کنترل آن را مختل می کند. مثال‌ها عبارتند از ورودی نامعتبر کاربر، منابع در دسترس مانند فایل‌ها و پوشه‌ها، و تلاش برای دسترسی به عناصر آرایه‌ها در فهرستی که وجود ندارد. مدیریت استثنا، مدیریت شرایط خطای احتمالی است تا به برنامه اجازه دهد بدون اختلال ادامه یابد.

بهترین روش ها برای مدیریت استثنا در سی شارپ چیست؟

سی شارپ چندین راه برای رسیدگی به استثناها مانند بلوک‌های try-catch، چندین بلوک try-catch و استثناهای سفارشی تعریف شده توسط کاربر ارائه می‌کند. در اینجا برخی از بهترین روش هایی که باید برای ایجاد یک برنامه کاربردی خوب دنبال کنید، آورده شده است.

1. اگر می‌توانید خطا را کنترل کنید، ریسک نکنید

ممکن است شرایط خطایی وجود داشته باشد که بسیار متداول است یا در بسیاری از برنامه ها ممکن است رخ دهد. به عنوان مثال، فرض کنید یک عملیات تقسیم در کد خود دارید. «تقسیم بر صفر» یک استثنای رایج برای چنین عملیاتی است.

int num1 = 100;

int num2 = 0;

try {

Console.WriteLine(num1 / num2);

}

catch (DivideByZeroException) {

Console.WriteLine("Divide by zero exception occured .");

}

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

int num1 = 100;

int num2 = 0;

if (num2 == 0) {

num2 = 1; //setting a default value

}

 

مثال دیگر "NullReferenceException" است که اگر یک شی یا یک متغیر تهی شود می تواند رخ دهد. به جای پرتاب یک استثنا، قبل از انجام هر عملیاتی بررسی کنید که آیا شی یا متغیر تهی است یا خیر. در اینجا نحوه انجام آن در سی شارپ آمده است،

User user = null;

var name = user?.Name;

 

اضافه کردن نماد "؟" C# به طور خودکار بررسی می کند که شیء تهی است.

2. ثبت استثناها

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

try {

//divide by zero

}

catch (DivideByZeroException exception)

{

Logger.LogError(exception, "Divide By Zero Exception");

}

استفاده از ClearInsights Exception Handling یک راه آسان برای ثبت استثناها و وارد کردن خودکار استثناها به لاگ‌های عقب مانده برای کار کردن است. اعلان های ایمیل نیز بر اساس تنظیمات پیکربندی شده برای اعضای تیم ارسال می شود. یک حساب رایگان ClearInsights ایجاد کنید تا امتحان کنید.

ClearInsights Logging را با کد زیر ادغام کنید

builder.Logging.AddClearInsightsLogger(configuration =>

{

configuration.ApiKey = "{ApiKey}";

configuration.Secret = "{Environment Client Secret}";

configuration.ApplicationName = "{Application Name}";

});

 

با این حال، لازم نیست هر استثنا را به صورت دستی مانند این ثبت کنید. اگر روشی خودکار برای ثبت استثناها دارید، می‌توانید ثبت را حتی آموزنده‌تر و پیشرفته‌تر کنید. ابزارهای ثبت به شما کمک می کنند تا به آن دست یابید. برای مثال، ورود به سیستم ClearInsights یکی از ابزارهای ورود به سیستم ساده اما بصری است که می توانید آن را برای ثبت خودکار در برنامه خود ادغام کنید.

با استفاده از این ابزار، می‌توانید نه تنها پیام استثنا، بلکه اطلاعات دیگری مانند محصول، محیط، منبع و ردپای پشته هر گزارش را نیز ضبط کنید. همچنین می‌توانید گزارش‌های گزارش‌گیری را برای مشاهده مروری بر انواع مختلف گزارش‌ها مانند بحرانی، خطا، هشدار، اطلاعات و ردیابی دریافت کنید که سطوح مختلفی از گزارش‌ها را ارائه می‌دهند. بهترین چیز دیگر در مورد استفاده از این ابزار این است که می توانید آنها را فیلتر کنید تا در مورد استثناهایی که اغلب در سیستم شما رخ می دهد بینش پیدا کنید. بنابراین، به عنوان بهترین روش، اطمینان حاصل کنید که از یک ابزار ثبت گزارش خوب استفاده می‌کنید که تجربه ورود آسان برنامه را برای شما فراهم می‌کند.

3. از دستورات پرتاب برای حفظ رد پشته استفاده کنید

در برخی از برنامه هایC#، توسعه دهندگان از عبارت “throw ex” به جای عبارت “through” در استثناها استفاده می کنند. اگر می خواهید ردیابی پشته کامل را از ابتدا دریافت کنید، این کار مفید نخواهد بود. از آنجا که عبارت "throw ex" ردیابی پشته را حفظ نمی کند، بنابراین ردیابی جایی که خطا برای اولین بار رخ داده دشوار است. اما عبارت "throw" ردیابی پشته را ثبت می کند. بنابراین، فراموش نکنید که به جای استفاده از عبارت "throw ex" در استثناها برای مدیریت بهتر استثنا، از دستور throw به صورت زیر استفاده کنید.

catch(Exception ex)

{

throw;

}

4. استثناهای سفارشی را با استفاده از کلمه کلیدی Exception ایجاد کنید

استثناهای سفارشی ایجاد کنید تا مدیریت استثناهای صریح را برای برنامه خود ارائه دهید. هنگام اعلام یک کلمه کلیدی "Exception" مانند مثال زیر استفاده کنید.

public class MyCustomException: Exception{}

شما می توانید رفتار مدیریت استثنا و استثناهای رایج در کلاس های برنامه خود را با استفاده از استثناهای سفارشی تعریف کنید. همچنین، استفاده از سه سازنده رایج برای کلاس های استثنای سفارشی، تمرین خوبی است که عبارتند از: Exception()، که مقادیر پیش فرض را تنظیم می کند. استثنا (رشته) که می توانید پیام ارسال کنید. و Exception (String، Exception)، برای تنظیم یک استثنای داخلی. وقتی استثنای سفارشی را تعریف می‌کنید، فراموش نکنید که برای هر استثنایی که در آنجا اعلام می‌کنید، ثبت گزارش نیز بگنجانید. علاوه بر این، از ویژگی های اضافی برای ارائه اطلاعات اضافی در مورد استثنا استفاده کنید.

5. تا حد امکان از استثناهای موجود استفاده کنید

پنجمین روش برتر مدیریت استثناهای سی شارپ، استفاده از استثناهای از پیش تعریف شده در هر زمان ممکن در کد شماست. این می تواند کاملاً با چهارمین تمرین برتر متناقض باشد. اما اگر کد برنامه شما دارای موارد خطای خاص تری باشد، ایجاد استثناهای سفارشی بهتر است. در زیر برخی از استثناهای از پیش تعریف شده موجود در سی شارپ و زمان استفاده از آنها آمده است:

FileNotFoundException – زمانی را پرتاب می کند که برنامه نتواند یک فایل را پیدا کند.

DivideByZeroException – یک عدد را بر صفر تقسیم کنید

ArgumentNullException – زمانی که مقدار آرگومان null باشد

InvalidOperationException – زمانی که یک عملیات نامعتبر است. به عنوان مثال، تلاش برای بستن اتصالی که قبلاً بسته شده است.

ArrayIndexOutOfBoundException – زمانی که سعی می کنید به عنصری از یک آرایه دسترسی پیدا کنید که در شاخصی خارج از حداکثر شاخص خود قرار دارد.

برنامه متمرکز ClearInsights

ثبت و نظارت

ثبت و نظارت برنامه کاملاً یکپارچه - تیم‌های نرم‌افزاری و کسب‌وکارها را قادر می‌سازد تا در عین داشتن بینش واضح نسبت به محصولات و برنامه‌های خود، سریع بسازند.

ClearInsights Logging را تنها با چند خط کد اضافه کنید و به‌طور خودکار خطاهای یافت شده جدید را مستقیماً به گروه‌های عقب مانده خود وارد کنید.

builder.Logging.AddClearInsightsLogger(configuration =>

 {

     configuration.ApiKey = "{ApiKey}";

     configuration.Secret = "{Environment Client Secret}";

     configuration.ApplicationName = "{Application Name}";

 });

طرح جامعه ClearInsights همیشه برای پروژه های کوچک رایگان است

خلاصه

از این مقاله، پنج روش زیر را برای مدیریت استثنا در سی شارپ یاد گرفتید.

رسیدگی به خطاهای رایج به جای پرتاب استثناها

تا حد امکان از استثناهای موجود استفاده کنید

استفاده از استثناهای سفارشی

با استفاده از لاگ برنامه

استفاده از دستورات پرتاب

یکی از مهمترین اقدامات ثبت استثناهای خود برای پشتیبانی بهتر از فرآیند عیب یابی است.

 

 

42 نظر:

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. قسمت های مورد نیاز علامت گذاری شده اند *