
مدیریت OverFlow در سی شارپ
به طور پیشفرض زبان سی شارپ درشرایطی از صدور خطاهای مربوط به سرریز شدن چشم پوشی میکند برای جلوگیری از از این رفتار میتوان با دستوراتی به کامپایلر اعلام کنیم که درصورت بروز سرریز خطایی صادر کند. به طور خلاصه، دستور checked در زبان برنامهنویسی C# برای کنترل و مدیریت خطاهای حاصل از تبدیلهای ناامن (overflow) در عملیاتهای عددی استفاده میشود. وقتی از checked استفاده میکنیم، برنامه در صورت بروز خطا (مانند تبدیلهای بیش از حد بزرگ یا کوچک) خودکار متوقف میشود و اجرای برنامه ادامه نمییابد.
برای مثال، اگر داشته باشیم
int a = 100000000; int b = 100000; // بدون checked، این عملیات باعث overflow میشود int result = a * b; Console.WriteLine(result); // نتیجه نادرست: 1316134912 // با checked، برنامه در صورت overflow متوقف میشود checked { int safeResult = a + b; Console.WriteLine(safeResult); // خطا: System.OverflowException }
در مثال بالا، بخشی از کد با checked نوشته شده است. اگر این بخش را اجرا کنید، خطای System.OverflowException دریافت خواهید کرد. این نشاندهندهی این است که عملیات جمع باعث overflow شده است و برنامه به درستی از این خطا مطلع شده است.
به طور کلی، استفاده از checked در مواردی که ممکن است عملیاتهای عددی به overflow منجر شوند، توصیه میشود تا از خطاهای ناخواسته جلوگیری کنیم
درمقابل دستور unchecked
در زبان برنامهنویسی C# برای کنترل و مدیریت خطاهای حاصل از تبدیلهای ناامن (overflow) در عملیاتهای عددی استفاده میشود. وقتی از unchecked
استفاده میکنیم، برنامه در صورت بروز خطا (مانند تبدیلهای بیش از حد بزرگ یا کوچک) خودکار ادامه مییابد و هیچ استثنا ایجاد نمیشود. به جای ایجاد استثنا، نتیجه عملیات به صورت تراکم شده (با حذف بیتهای بالایی که در نوع مقصد جا نمیگیرند) نمایش داده میشود.
برای مثال، در کد زیر
int a = int.MaxValue; int b = 1; // بدون unchecked، این عملیات باعث overflow میشود int result = a + b; Console.WriteLine(result); // نتیجه نادرست: -2147483648 // با unchecked، برنامه ادامه مییابد unchecked { int safeResult = a + b; Console.WriteLine(safeResult); // نتیجه: 2 }
در مثال بالا، بخشی از کد با unchecked
نوشته شده است. اگر این بخش را اجرا کنید، نتیجهی عملیات جمع به صورت بدون خطا نمایش داده میشود. این کلیدواژه مفید است زمانی که میخواهیم از خطاهای ناخواسته در عملیاتهای عددی جلوگیری کنیم
دیدگاه کاربران