Изменения

Перейти к: навигация, поиск

Обработка ошибок и исключения

3034 байта добавлено, 21:52, 16 марта 2014
Примеры исключений
}
*<code>IllegalStateException</code> возникает в результате некорректного состояния объекта. Например, использование объекта перед тем как он будет инициализирован.
 
==Гарантии безопасности==
При возникновении исключительной ситуации, состояния объектов и программы могут удовлетворять некоторым условиям, которые определяются различными типами гарантий безопасности:
* Отсутствие гарантий (''no exceptional safety''). Если было брошено исключение, то не гарантируется, что все ресурсы будут корректно закрыты и что объекты, методы которых бросили исключения, могут в дальнейшем использоваться. Пользователю придется пересоздавать все необходимые объекты и он не может быть уверен в том, что может переиспозовать те же самые ресурсы.
* Отсутствие утечек (''no-leak guarantee''). Объект, даже если какой-нибудь его метод бросает исключение, освобождает все ресурсы или предоставляет способ сделать это.
* Слабые гарантии (''weak exceptional safety''). Если объект бросил исключение, то он находится в корректном состоянии, и все инварианты сохранены. Рассмотрим пример:
 
class Interval {
//invariant: left <= right
double left;
double right;
//...
}
 
Если будет брошено исключение в этом классе, то тогда гарантируется, что ивариант "левая граница интервала меньше правой" сохранится, но значения <code>left</code> и <code>right</code> могли измениться.
 
* Сильные гарантии (''strong exceptional safety''). Если при выполнении операции возникает исключение, то это не должно оказать какого-либо влияния на состояние приложения. Состояние объектов должно быть таким же как и до вызовов методов.
 
* Гарантия отсутствия исключений (''no throw guarantee''). Ни при каких обстоятельствах метод не должен генерировать исключения. В Java это невожможно, например, из-за того, что <code>VirtualMachineError</code> может произойти в любом месте, и это никак не зависит от кода. Кроме того, эту гарантию практически невозможно обеспечить в общем случае.
==Источники==
Анонимный участник

Навигация