چهار نوع خطای رایج در برنامه نویسی وجود دارد که در ادامه توضیح هر کدام آمده است.
خطای نحوی (Syntax Error)
اولین، رایجترین و شاید سادهترین نوع خطا، خطای نحوی است. این خطا مربوط به زمان نوشتن کدهای برنامه (قبل از کامپایل و اجرا شدن) است. در انگلیسی به این خطا Syntax Error گفته میشود. در فارسی با نامهای خطای گرامری، خطای دستوری یا خطای نوشتاری کد نیز شناخته میشود. اگر در نوشتن یک برنامه به زبان مورد نظر، اصول (دستور گرامری) آن زبان را رعایت نکنیم، با خطای دستوری در برنامه نویسی مواجه خواهیم شد.
خطای زمان کامپایل (Compile Error)
خطای دیگر خطای همزمان با ترجمه یا Compile Time Error است. معمولاً این ارور در زبانهای برنامه نویسی کامپایلری رخ میدهد. در اجرای برنامه یاد گرفتیم که زبانهای کامپایلری مثل زبان سی شارپ قبل از اجرا باید compile شوند. فرآیند ترجمه کد پیچیده است اما در همین حد بدانید که لازم است مقدماتی برای آن فرآهم شود. یکی از مقدماتی که به ما مربوط است، وجود کلیه فایلهای یک برنامه (اگر برنامه دارای چند فایل کد است) و در دسترس بودن کتابخانههای استفاده شده در برنامه است. اگر در هنگام کامپایل کردن کد، یک یا چند مورد از این مقدمات فرآهم نباشد، با کامپایل ارور مواجه خواهیم شد.
خطای زمان اجرا (Run-Time Error)
فرض کنید کد به درستی نوشته شده و با موفقیت کامپایل شده است. در هنگام اجرای کد، شرایطی به وجود میآید که این کد به درستی اجرا نمیشود. برای مثال، اگر برنامه ما فایلی را در کنار خود لازم داشته باشد تا چیزی از داخل آن خوانده شده یا در آن بنویسید و این فایل وجود نداشته باشد، با خطای زمان اجرا در برنامهنویسی مواجه خواهیم شد. در واقع خطایی در هنگام کار با فایل رخ داده است. خطای Run Time یک خطای غیر منتظره است. یعنی همه چیز به درستی عمل میکند تا این که یک نقص به وجود میآید. یکی از خطاهای معروف زمان اجرا در برنامه نویسی، عملیات تقسیم بر صفر است. میدانیم که تقسیم هر عددی بر صفر، یک مقدار تعریف نشده به شمار میآیند. حال اگر ما یک ماشین حساب نوشته باشیم که دو عدد ورودی از کاربر و عملگر را گرفته و حاصل را برمیگرداند. اگر کاربر سیستم عملیات تقسیم را انجام دهد و عدد دوم را صفر تعریف کند، با خطای زمان اجرا مواجه میشویم.
خطای منطقی (Logical Error)
خطرناکترین نوع خطا، خطای منطقی در برنامهنویسی است! تا این جا ۳ نوع اصلی خطای برنامهنویسی را با هم بررسی کردیم. این خطاها را کامپیوتر تا حدودی میتواند تشخیص دهد. حتی انسانها نیز به کمک کامپیوترها میآیند تا از بروز خطاهای قبلی جلوگیری کنند. در خطای منطقی، کدها صحیح هستند، کامپایل به درستی انجام میشود و ورودیهای برنامه نیز کاملاً صحیح و بدون ایراد خواهند بود. اما نتیجه کار، اشتباه است! فرض کنید عمل ضرب برای یک ماشین حساب را نوشتهاید. در سورس برنامه به جای عملگر ضرب از عملگر جمع استفاده کردهاید. کد به درستی اجرا میشود ولی نتیجهای که در انتها داریم صحیح نیست. این نوع ایرادات در فرآیند اجرای برنامه هیچ مشکلی ایجاد نمیکند. به این دلیل خطای منطقی را یک باگ نرم افزاری در نظر میگیریم که نتیجه اشتباه است. به همین دلیل است که گفتم خطرناکترین خطای برنامهنویسی همین نوع خطاست.