تفاوت بین استثنا و خطا

تفاوت بین استثنا و خطا
تفاوت بین استثنا و خطا

تصویری: تفاوت بین استثنا و خطا

تصویری: تفاوت بین استثنا و خطا
تصویری: نوکیا N9 | چرا MeeGo بهترین سیستم عاملی است که تا به حال استفاده کرده ام 2024, جولای
Anonim

استثنا در مقابل خطا

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

استثنا چیست؟

Exception یک رویداد است که می تواند جریان عادی برنامه را مختل کند. نام استثنا از "رویداد استثنایی" می آید. پرتاب یک استثنا، فرآیند ایجاد یک شی استثنا و تحویل آن به سیستم زمان اجرا است.شی Exception با روشی ایجاد می شود که در آن استثنا رخ داده است. شی Exception حاوی اطلاعات مفیدی مانند نوع و شرح استثنا است. هنگامی که سیستم زمان اجرا شی استثنا را دریافت می کند، سعی می کند با پیمایش آن به ترتیب معکوس (که در آن متدها فراخوانی شده اند، شخصی را پیدا کند که آن را در پشته فراخوانی مدیریت کند). پشته فراخوانی لیست مرتب متدهایی است که قبل از روشی که در آن استثنا رخ داده فراخوانی شده اند. سیستم زمان اجرا در صورتی موفق است که متدی را با یک کنترل کننده استثنا بیابد. Exception handler یک بلوک کد است که می تواند به طور رسمی استثناء مذکور را مدیریت کند. اگر سیستم زمان اجرا یک کنترل کننده مناسب پیدا کند (یعنی نوع استثنا با نوع قابل رسیدگی مطابقت دارد)، شی استثنا را به کنترل کننده ارسال می کند. به این میگن گرفتن استثنا. با این حال، اگر استثنا قابل رسیدگی نباشد، برنامه خاتمه می یابد. در جاوا، استثناها از «کلاس Throwable» به ارث می‌برند. NullPointerException و ArrayIndexOutOfBoundsException دو استثنای رایج در جاوا هستند.

خطا چیست؟

خطا شرایطی است که می توان آن را غیرقابل جبران در نظر گرفت، مانند اینکه برنامه به مقدار حافظه بزرگتر از مقدار موجود نیاز دارد. این خطاها در زمان اجرا قابل کنترل نیستند. اگر خطایی رخ دهد، برنامه خاتمه می یابد. در جاوا، خطاها از کلاس Throwable به ارث می برند. خطاها معمولاً نشان دهنده مشکلات جدی هستند که برنامه نویس (یا برنامه) نباید سعی در حل آنها کند. خطاها صرفاً شرایط غیرعادی هستند که هرگز انتظار نمی رود در شرایط عادی رخ دهند و بنابراین هرگز پیش بینی نمی شوند. به عنوان مثال، OutOfMemoryError، StackOverflowError و ThreadDead از این قبیل خطاها هستند. روش ها هرگز نباید دارای کنترل کننده خطا باشند.

تفاوت بین استثنا و خطا چیست؟

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

توصیه شده: