Предположим, что в ходе выполнения программы, написанной на языке Java обнаруживается ошибка. Она может быть вызвана неверной информацией в файле, неправильным сетевым соединением или выходом ща пределы допустимого диапазона изменения индексов массива, а может быть попыткой использования ссылки, которая не указывает на какой-либо объект. Вполне естественно, пользователи надеются, что программа самостоятельно справится с возникшими неприятностями. Если из-за ошибки какая-либо операция не может быть завершена, то программа должна сделать одно из двух.
- Вернуться в безопасное состояние и позволить пользователю выполнить другие команды.
- Дать пользователю возможность сохранить результаты своей работы и аккуратно завершить работу.
Это может оказаться нелегко: фрагмент кода, в котором обнаруживается ошибка(или даже тот, выполнение которой становится причиной ошибка), обычно располагается довольно далеко от кода, который может восстановить данные и сохранить результаты, полученные пользователем. Механизм обработки исключений предназначен для передачи данных обработчику ошибок из того места, где возник сбой.
Предусматривая обработку исключения в программе, нужно предвидеть возможные ошибки и проблемы, связанные с ними. Какие же ошибки следует рассмотреть в первую очередь?
- Ошибки ввода. В дополнение к неизбежным опечаткам пользователи часто предпочитают двигаться своими собственным маршрутом вместо задуманного разработчиком. Представим, что пользователь желает соединиться с Web-сайтом, но допустим синтаксическую ошибку, задавая URL. Ваша программа должна была бы проверить синтаксис, но, предположим, вы забыли это сделать. Тогда сетевое программное обеспечение сообщит об ошибке.
- Сбои оборудования. Аппаратное обеспечение не всегда работает так, как вы ожидаете. Принтер может оказаться выключенным, а Web-страница временно недоступной. Оборудование часто отказывает в процессе работы, например, принтер может отказать на середине страницы.
- Физические ограничения . Диск может оказаться переполненным, а оперативная память исчерпанной.
- Ошибки программирования. Какой-либо метод может работать неправильно. Например, он может возвращать неверный результат или некорректно вызывать другие методы. Выход за пределы массива, попытка найти несуществующий элемент хеш-таблицы, извлечение элемента из пустого стека — все это примеры ошибок программирования.
Обычно метод сообщает об ошибке, возвращая специальный код, который анализируется вызывающим методом. Например, методы, считывающие информацию из файлов, по достижении конца файла обычно возвращают значение -1. Такой способ обработки ошибок часто оказывается эффективным. В других случаях в качестве признака ошибки возвращается значение null. В главе 10 мы рассмотрели пример, в котором метод getParameter() класса Applet возвращал null, если требуемый параметр отсутствовал.
К сожаления, возвращать код ошибки не всегда возможно. Иногда не удается различить правильные данные и признак ошибки. Метод, возвращающий целое число, не может, обнаружив ошибку, вернуть значение -1, поскольку оно может быть результатом вычислений. В языке Java есть возможность предусмотреть в каждом методе альтернативный выход, которым следует воспользоваться, если задачу невозможно выполнить до конца.
При этом метод не станет возвращать значение, а сгенерирует (throw) объект, инкапсулирующий информацию об ошибке. Обратите внимание на то, что выход из метода происходит незамедлительно, и он не возвращает своего нормального значения. Более того, возобновить выполнение кода, вызвавшего данный метод, невозможно. Вместо этого начинается поиск обработчика исключения, который может справиться с возникшей ошибкой.
Исключения имеют свой собственный синтаксис и являются частью особой иерархии наследования.
Вам нужны кузовные запчасти для иномарок в Санкт-Петербурге? Советуем вам купить кузовные запчасти на сайтае smtauto.ru. Все по самым выгодным ценам.