Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Упражнения

Читайте также:
  1. Артикуляционные упражнения для растягивания уздечки языка
  2. Базовые упражнения на меткость
  3. Базовые упражнения на меткость
  4. БЕЗОПАСНЫЕ И УДОБНЫЕ УПРАЖНЕНИЯ ВО ВРЕМЯ ГРУДНОГО ВСКАРМЛИВАНИЯ
  5. Благочестивые упражнения во время молитвы и расслабления духовного.
  6. Глава 18. УПРАЖНЕНИЯ ПО ПОВЫШЕНИЮ УВЕРЕННОСТИ В СЕБЕ
  7. Дыхательные Упражнения Вазы
  8. Задачи и упражнения
  9. Занятие 10. Одноатомные спирты. Тест по теме «Одноатомные спирты». Задачи и упражнения на одноатомные спирты.
  10. Звуковые упражнения

Решения для выбранных упражнений могут быть найдены в электронной документации The Thinking in Java Annotated Solution Guide, доступной за малую плату на www.BruceEckel.com.

  1. Создайте класс с main(), который выбрасывает объект, класса Exception внутри блока try. Передайте конструктору Exception аргумент String. Поймайте исключение внутри предложение catch и напечатайте аргумент String. Добавьте предложение finally и напечатайте сообщение, чтобы убедится, что вы были там.
  2. Создайте ваш собственный класс исключений, используя ключевое слово extends. Напишите конструктор для этого класса, который принимает аргумент String, и хранит его внутри объекта в ссылке String. Напишите метод, который печатает хранящийся String. Создайте предложение try-catch для наблюдения своего собственного исключения.
  3. Напишите класс с методом, который выбрасывает исключение типа, созданного в Упражнении 2. Попробуйте откомпилировать его без спецификации исключения, чтобы посмотреть, что скажет компилятор. Добавьте соответствующую спецификацию исключения. Испытайте ваш класс и его исключение в блоке try-catch.
  4. Определите ссылку на объект и инициализируйте ее значением null. Попробуйте вызвать метод по этой ссылке. Не окружайте код блоком try-catch, чтобы поймать исключение.
  5. Создайте класс с двумя методами f() и g(). В g() выбросите исключение нового типа, который вы определили. В f() вызовите g(), поймайте его исключение и, в предложении catch, выбросите другое исключение (второго определенного вами типа). Проверьте ваш код в main().
  6. Создайте три новых типа исключений. Напишите класс с методом, который выбрасывает все три исключения. В main() вызовите метод, но используйте только единственное предложение catch, которое будет ловить все три вида исключений.
  7. Напишите код для генерации и поимки ArrayIndexOutOfBoundsException.
  8. Создайте свое собственное поведение по типу возобновления, используя цикл while, который будет повторяться, пока исключение больше не будет выбрасываться.
  9. Создайте трехуровневую иерархию исключений. Теперь создайте базовый класс A, с методом, который выбрасывает исключение базового класса вашей иерархии. Наследуйте B от A и перегрузите метод так, чтобы он выбрасывал исключение второго уровня в вашей иерархии. Повторите то же самое, унаследовав класс C от B. В main() создайте C и приведите его к A, затем вызовите метод.
  10. Покажите, что конструктор наследуемого класса не может ловить исключения, брошенные конструктором базового класса.
  11. Покажите, что OnOffSwitch.java может завершиться неудачей при выбрасывании RuntimeException внутри блока try.
  12. Покажите, что WithFinally.java не завершится неудачей при выбрасывании RuntimeException в блоке try.
  13. Измените Упражнение 6, добавив предложение finally. Проверьте, что предложение finally выполняется даже, если выбрасывается NullPointerException.
  14. Создайте пример, в котором вы используете флаг для управления вызовом кода очистки, как описано во втором параграфе под заголовком “Конструкторы”.
  15. Измените StormyInning.java, добавив тип исключения UmpireArgument и метод, который его выбрасывает. Проверьте измененную иерархию.
  16. Удалите первый catch в Human.java и проверьте, что код все равно компилируется и правильно работает.
  17. Добавьте второй уровень потерь исключения в LostMessage.java, так чтобы HoHumException заменялось третьим исключением.
  18. В Главе 5 найдите две программы, называемые Assert.java и измените их, чтобы они выбрасывали свои собственные исключения вместо печать в System.err. Это исключение должно быть внутренним классом, расширяющим RuntimeException.
  19. Добавьте подходящий набор исключений в c08:GreenhouseControls.java.

[51] C программист может посмотреть на возвращаемое значение printf(), как пример этого.

[52] Это значительное улучшение, по сравнению с обработкой исключений в C++, которая не ловит нарушения спецификации исключений до времени выполнения, хотя это не очень полезно.

[53] Обработка исключений в C++ не имеет предложения finally, поэтому в C++ освобождение происходит в деструкторах, чтобы завершить такой род очистки.

[54] Деструктор - это функция, которая всегда вызывается, когда объект более не используется. Вы всегда знаете точно, где совершен вызов деструктора. C++ имеет автоматический вызов деструктора, но Object Pascal из Delphi версии 1 и 2 не делает этого (что изменяет значение и использование концепции деструкторов в этом языке).

[55] ISO C++ добавил сходное ограничение, которое требует, чтобы исключение наследуемого метода были теми же или наследовались от тех же, что и выбрасываемые методом базового класса. Это первый случай, в котором C++ реально способен проверить спецификацию исключений во время компиляции.

[56] В C++ деструктор должен это обрабатывать за вас.

 

 

 




Дата добавления: 2015-09-11; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав

Vector и Enumeration | Hashtable | Упражнения | Обработка ошибок с помощью исключений | Создание ваших собственных исключений | Перехват любого исключения | Повторное выбрасывание исключений | Особый случай RuntimeException | Для чего нужно finally? | Ограничения исключений |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав