Разлика между изключение и грешка

Разлика между изключение и грешка
Разлика между изключение и грешка

Видео: Разлика между изключение и грешка

Видео: Разлика между изключение и грешка
Видео: КАК УСТРОЕН БАЛАНС? СИЛА ЛОВКОСТЬ И ИНТЕЛЛЕКТ 2024, Юли
Anonim

Изключение срещу грешка

Неочаквано поведение е задължително да възникне, когато дадена програма работи. Това може да се дължи на изключения или грешки. Изключение правят събития, които могат да нарушат нормалното протичане на програмата. Грешките са състояния, които могат да се считат за непоправими. Изключенията са свързани най-вече със самото приложение, докато грешките са свързани със системата, на която програмата работи.

Какво е изключение?

Изключение е събитие, което може да наруши нормалния поток на програмата. Името изключение идва от „изключително събитие“. Хвърлянето на изключение е процес на създаване на обект на изключение и предаването му на системата за изпълнение. Обектът на изключение се създава от метода, в който е възникнало изключението. Обектът на изключение съдържа полезна информация като типа и описанието на изключението. Когато системата за изпълнение получи обекта за изключение, тя ще се опита да намери някой, който да го обработи в стека на повикванията, като го обходи в обратния ред (в който са извикани методите). Стекът за извикване е подреден списък от методи, които са били извикани преди метода, в който е възникнало изключението. Системата за изпълнение е успешна, ако намери метод с манипулатор на изключения. Манипулаторът на изключения е блок от код, който може официално да обработва споменатото изключение. Ако системата за изпълнение намери подходящ манипулатор (т.е. типът на изключение съвпада с типа, който може да бъде обработен), тя ще предаде обекта на изключение на манипулатора. Това се нарича прихващане на изключението. Въпреки това, ако изключението не може да бъде обработено, програмата ще приключи. В Java изключенията наследяват от „класа Throwable“. NullPointerException и ArrayIndexOutOfBoundsException са две често срещани изключения в Java.

Какво е грешка?

Грешката е състояние, което може да се счита за непоправимо, като например програмата, изискваща количество памет, по-голямо от наличното. Тези грешки не могат да бъдат обработени по време на изпълнение. Ако възникне грешка, програмата ще се прекрати. В Java грешките се наследяват от клас Throwable. Грешките обикновено означават сериозни проблеми, които програмистът (или приложението) не трябва да се опитва да хване. Грешките са просто необичайни условия, които никога не се очаква да възникнат при нормални обстоятелства и следователно никога не са предвидени. Например OutOfMemoryError, StackOverflowError и ThreadDead са такива грешки. Методите никога не трябва да имат манипулатори за грешки.

Каква е разликата между изключение и грешка?

Както грешките, така и изключенията са нежелано събитие по време на изпълнение на програма. Те обаче имат ключови разлики. Изключенията могат да бъдат предвидени от програмиста, докато грешка е трудно да се предвиди. Изключенията могат да бъдат отметнати или неотметнати. Но грешките винаги не се проверяват. Изключенията обикновено показват грешка, причинена от програмиста. Възникват обаче грешки поради системна грешка или неподходящо използване на ресурс. Следователно изключенията трябва да се обработват на ниво приложение, докато грешките трябва да се отстраняват на системно ниво (само ако е възможно). След като обработите изключение, гарантирано ще се върнете към нормалния поток на програмата. Но дори и да бъде уловена грешка, програмистът може да не знае как да се справи с нея на първо място. За разлика от традиционното обработване на грешки, изключенията позволяват отделяне на кода за обработка на грешки от обикновения код.

Препоръчано: