Разлика между проверено изключение и изключение по време на изпълнение

Разлика между проверено изключение и изключение по време на изпълнение
Разлика между проверено изключение и изключение по време на изпълнение

Видео: Разлика между проверено изключение и изключение по време на изпълнение

Видео: Разлика между проверено изключение и изключение по време на изпълнение
Видео: Как решать конфликты на работе? 2024, Ноември
Anonim

Проверено изключение срещу изключение по време на изпълнение

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

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

Проверени Изключенията са обекти от класа java.lang.exception или неговите подкласове (с изключение на java.lang. RuntimeException и неговите подкласове). Проверените изключения се „проверяват“по време на компилиране. Това означава, че програмистът трябва или да улови, или да хвърли тези изключения, в противен случай компилацията ще се оплаче (причинявайки грешка на компилатора). Поради тази причина много проверени изключения са много добре познати на програмистите. Например, IOException и неговите подкласове са проверени изключения и всеки път, когато програмистът се занимава с достъп до или модифициране на файл, компилаторът проверява, за да се увери, че всички възможни IOExceptions са обгрижени от програмиста.

Какво е изключение по време на изпълнение?

Изключенията по време на изпълнение се състоят от java.lang. RuntimeException и всички негови подкласове. Теоретично казано, те служат на същата цел като проверените изключения и могат да бъдат хвърлени или обработени като проверени изключения, но обработката им не се налага от компилатора. Следователно изключенията по време на изпълнение принадлежат към семейството на непроверените изключения. NullPointerException, NumberFormatEception, ClassCastException и ArrayIndexOutOfBoundsException са често срещани изключения по време на изпълнение в Java.

Каква е разликата между проверено изключение и изключение по време на изпълнение?

Въпреки че както проверените изключения, така и изключенията по време на изпълнение са нежелано събитие по време на изпълнение на програма, те имат своите разлики. Обработката на проверени изключения се налага от компилатора, но изключенията по време на изпълнение не са. Следователно проверените изключения трябва да бъдат хвърлени или обработени, за да може кодът да се компилира, но няма такова изискване по отношение на изключения по време на изпълнение. Следователно изключенията по време на изпълнение принадлежат към категорията на непроверените изключения заедно с грешките.

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

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