Типи даних і винятки в Java
Jim White
Java Developer
Error — це серйозна проблемаimport java.util.*;
public class CauseOutOfMemory {
public static void main(String[] args) {
List<Long> numbers = new ArrayList<Long>();
long counter = 0;
while (true) {
numbers.add(counter);
counter++;
}
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.base/java.lang.Long.valueOf(Long.java:1204)
at foo/exceptions.CauseOutOfMemory.main(CauseOutOfMemory.java:12)
| Перевірюваний (Checked) виняток | Runtime («unchecked») виняток | |
|---|---|---|
| Потрібна обробка | Так | Ні |
| Загальна причина | Речі поза нашим контролем | Наші помилки програмування |
| Відновлення | Зазвичай можливе, якщо передбачено | Зазвичай неможливе |
| Механізм відновлення | try/catch або throws | Краще писати код, щоб їх уникати |
| Приклад | Файл не знайдено | Індекс масиву поза межами |
Exception, що не є підкласами RuntimeException, — це перевірювані виняткиFileNotFoundException)RuntimeException — суперклас для всіх неперевірюваних винятківIndexOutOfBoundsException)ArithmeticException)| Підклас RuntimeException | Коли виникає |
|---|---|
| ArithmeticException | Неприпустимі обчислення, як-от ділення на 0 |
| IndexOutOfBoundsException | Індекс для масиву, String тощо поза діапазоном |
| NegativeArraySizeException | Спроба створити масив із відʼємним розміром |
int y = 5/0; // код, що спричиняє ArithmeticException
int[] list = new int[-1]; // код, що спричиняє NegativeArraySizeException
Exception in thread "main" java.lang.ArithmeticException: / by zero
Exception in thread "main" java.lang.NegativeArraySizeException: -1
public class LoadClass {
public static void main(String[] args) {
Class myClass = Class.forName("com.mysql.Driver");
}
}
LoadClass.java:3: error: unreported exception ClassNotFoundException;
must be caught or declared to be thrown
Class myClass = Class.forName("com.mysql.Driver");
^
1 error
Типи даних і винятки в Java