Exception (виняток) – це об’єкт, який сигналізує про помилкову або неочікувану ситуацію, що виникла під час виконання програми. Він порушує нормальний хід виконання коду та може бути оброблений спеціальними механізмами. У Java винятки поділяються на два основних типи: перевірені (checked) та неперевірені (unchecked).
Checked Exceptions
Це винятки які перевіряються під час компіляції, що змушує програміста обробляти їх явно. Якщо метод може призвести до checked exception, потрібно або обробити його за допомогою блоку try-catch, або вказати про це в сигнатурі методу через throws (прокинути далі).
Перевірені (контрольовані) винятки зазвичай вказують на ситуації, які хоч і є винятковими, але можуть передбачувано виникати під час нормальної роботи програми – наприклад помилки вводу/виводу, відсутній файл або проблеми з мережею.
Приклади класів checked exceptions у Java: IOException, FileNotFoundException, SQLException, ParseException.
Приклад обробки винятку всередині методу:
public void parseDate(String dateString) {
try {
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
System.out.println("Parsing successful: " + date);
} catch (ParseException e) {
System.err.println("Invalid date format: " + dateString);
}
}Приклад передачі винятку далі за допомогою throws:
public Date parseDate(String dateString) throws ParseException {
return new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
}Unchecked Exceptions
Це винятки які компілятор не вимагає явно обробляти або декларувати в сигнатурі методу. Виникають вже на етапі виконання програми, зазвичай спричинені логічними помилками у коді, через що їх складно передбачити та обробити.
Неконтрольовані винятки є підкласами RuntimeException, приклади класів: NullPointerException, ArrayIndexOutOfBoundsException, IllegalArgumentException.