07.09.26
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
## Проявление ошибок
|
||||
- На этапе компиляции - проверяет компилятор
|
||||
- синтаксические ошибки
|
||||
- ошибки типов данных
|
||||
- На этапе выполнения - возникают во время работы
|
||||
- отсутствие ресурса
|
||||
- ошибки данных
|
||||
- логические ошибки
|
||||
## Система исключений
|
||||
- Специальный объект - исключение
|
||||
- создается системой ([[JVM]]) или программой (`new`)
|
||||
- выбрасывается (`throw`)
|
||||
- требует обработки в коде
|
||||
- `try` - код, где может возникнуть
|
||||
- `catch` - код, отлавливающий исключение
|
||||
- `finally` - код, завершающий обработку
|
||||
## Иерархия классов исключений
|
||||
|
||||
![[Exceptions.png]]
|
||||
## Unchecked
|
||||
- Непроверяемое или неконтроллируемое исключение
|
||||
- Компилятору все равно, обработано или нет
|
||||
- Выбрасывается виртуальной машиной
|
||||
- Класс `RuntimeException` и его потомки:
|
||||
- Проблема в коде
|
||||
- Можно обработать
|
||||
- Класс `Error` и его потомки
|
||||
- Критическая ошибка
|
||||
- Можно обработать, но уже поздно
|
||||
## Checked
|
||||
- Проверяемое или контролируемое исключение
|
||||
- Обычно явно выбрасывается в программе
|
||||
- Вызывается внешними причинами
|
||||
- Компилятор проверяет, что про него не забыли: catch or throw
|
||||
- Если понятно, что делать - обработать
|
||||
- Если нет - передать выше
|
||||
## try-catch-finally
|
||||
```Java
|
||||
try {
|
||||
// проблемный код
|
||||
} catch (Exception e) {
|
||||
// e - объект ошибки
|
||||
} finally {
|
||||
// всегда выполнится
|
||||
}
|
||||
```
|
||||
> [!hint] Можно писать `IOException | MyException | ... e`
|
||||
> Для игнора: `Exception _`
|
||||
## Проброс исключения
|
||||
Через ключевое слово `throws`
|
||||
```Java
|
||||
void method() throws Exception {
|
||||
|
||||
}
|
||||
```
|
||||
Исключение пробрасывается, пока не будет поймано, либо в `main`, а оттуда вылет с программы
|
||||
P.S. можно писать как для checked, так и для unchecked
|
||||
## try-with-resources
|
||||
Автозакрытие ресурсов - интерфейс `AutoCloseable`
|
||||
```Java
|
||||
try (File f = open("name")) {
|
||||
int x = f.readInt();
|
||||
result = 1 / x;
|
||||
calculate(result);
|
||||
} catch (IOException e) {
|
||||
// ...
|
||||
}
|
||||
// не надо писать finally для закрытия файла
|
||||
```
|
||||
Reference in New Issue
Block a user