Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » К. Арнольд, Д. Гослинг - Язык программирования Java

К. Арнольд, Д. Гослинг - Язык программирования Java, страница 60

PDF-файл К. Арнольд, Д. Гослинг - Язык программирования Java, страница 60 Языки программирования (53641): Книга - 7 семестрК. Арнольд, Д. Гослинг - Язык программирования Java: Языки программирования - PDF, страница 60 (53641) - СтудИзба2019-09-19СтудИзба

Описание файла

PDF-файл из архива "К. Арнольд, Д. Гослинг - Язык программирования Java", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 60 страницы из PDF

Родной методможет вызываться из программы на Java, но пишется он на “родном” языке — обычно на C или C++.При использовании родных методов о переносимости и надежности программы говорить не приходится. Например, родные методы нельзяприменять в коде, который должен пересылаться по сети и выполняться на другом компьютере (скажем, в аплетах) — его архитектура можетотличаться от вашей, но даже если они и совпадают, удаленный компьютер может попросту не доверять вашей системе настолько, чтобыразрешить запускать у себя откомпилированную программу на C.Сведения, касающиеся написания родных методов, приведены в Приложении A.Содержание | ДалееГлава 7ИСКЛЮЧЕНИЯПлохо подогнанное снаряжение может заставить ваш гранатомет M203 выстрелить в самый неожиданный момент.Подобное происшествие плохо скажется на вашей репутации среди тех, кто останется в живых.Журнал PS армии США,август 1993 годаВо время своей работы приложение иногда сталкивается с разного рода нештатными ситуациями.

При вызове метода некоторого объекта онможет обнаружить у себя внутренние проблемы (неверные значения переменных), найти ошибки в других объектах или данных (например, вфайле или сетевом адресе), определить факт нарушения своего базового контракта (чтение данных из закрытого потока) и так далее.Многие программисты не проверяют все возможные источники ошибок, и на то есть веская причина: если при каждом вызове методаанализировать все мыслимые ошибки, текст программы становится совершенно невразумительным. Таким образом достигается компромиссмежду правильностью (проверка всех ошибок) и ясностью (отказ от загромождения основной логики программы множеством проверок).Исключения предоставляют удобную возможность проверки ошибок без загромождения текста программы. Кроме того, исключениянепосредственно сигнализируют об ошибках, а не меняют значения флагов или каких-либо полей, которые потом нужно проверять.

Исключенияпревращают ошибки, о которых может сигнализировать метод, в явную часть контракта этого метода. Список исключений виден программисту,проверяется компилятором и сохраняется в расширенных классах, переопределяющих данный метод.Исключение возбуждается, когда возникает неожиданное ошибочное состояние.

Затем исключение перехватывается соответствующимусловием в стеке вызова методов. Если исключение не перехвачено, срабатывает обработчик исключения по умолчанию, который обычновыводит полезную информацию об исключении (скажем, содержимое стека вызовов).7.1.

Создание новых типов исключенийИсключения в Java представляют собой объекты. Все типы исключений (то есть все классы, объекты которых возбуждаются в качествеисключений) должны расширять класс языка Java, который называется Throwable, или один из его подклассов. Класс Throwable содержит строку,которая может использоваться для описания исключения.

По соглашению, новые типы исключений расширяют класс Exception, а не Throwable.Исключения Java, главным образом, являются проверяемыми — это означает, что компилятор следит за тем, чтобы ваши методы возбуждалилишь те исключения, о которых объявлено в заголовке метода. Стандартные исключения времени выполнения и ошибки расширяют классыRuntimeException и Error, тем самым создавая непроверяемые исключения.

Все исключения, определяемые программистом, должны расширятькласс Exception, и, таким образом, они являются проверяемыми.Иногда хочется иметь больше данных, описывающих состояние исключения, — одной строки, предоставляемой классом Exception, оказываетсянедостаточно. В таких случаях можно расширить класс Exception и создать на его основе новый класс с дополнительными данными (значениякоторых обычно задаются в конструкторе).Например, предположим, что в интерфейс Attributed, рассмотренный в главе 4, добавился метод replaceValue, который заменяет текущеезначение именованного атрибута новым. Если атрибут с указанным именем не существует, возбуждается исключение — вполне резоннопредположить, что заменить несуществующий атрибут не удастся.

Исключение должно содержать имя атрибута и новое значение, котороепытались ему присвоить. Для работы с таким исключением создается класс NoSuchAttribiteException:public class NoSuchAttributeException extends Exception {public String attrName;public Object newValue;NoSuchAttributeException(String name, Object value) {super("No attribute named \"" + name + "\" found");attrName = name;newValue = value;}}NoSuchAttribiteException расширяет Exception и включает конструктор, которому передается имя атрибута и присваиваемое значение; крометого, добавляются открытые поля для хранения данных. Внутри конструктора вызывается конструктор суперкласса со строкой, описывающейпроисходящее.

Исключения такого рода могут использоваться во фрагменте программы, перехватывающем исключения, поскольку они выводятпонятное человеку описание ошибки и данные, вызвавшие ее. Добавление полезной информации — одна из причин, по которым создаютсяновые исключения.Другая причина для появления новых типов исключений заключается в том, что тип является важной частью данных исключения, посколькуисключения перехватываются по их типу. Из этих соображений исключение NoSuch AttribiteException стоит создать даже в том случае, если вы несобираетесь включать в него новые данные; в этом случае программист, для которого представляет интерес только это исключение, сможетперехватить его отдельно от всех прочих исключений, запускаемых методами интерфейса Attributed или иными методами, применяемыми кдругим объектам в том же фрагменте программы.В общем случае исключения новых типов следует создавать тогда, когда программист хочет обрабатывать ошибки одного типа и пропускатьошибки другого типа.

В этом случае он может воспользоваться новыми исключениями для выполнения нужного фрагмента программы, вместотого чтобы изучать содержимое объекта-исключения и решать, интересует ли его данное исключение или же оно не относится к делу иперехвачено случайно.7.2. Оператор throwИсключения возбуждаются оператором throw, которому в качестве параметра передается объект. Например, вот как выглядит реализацияreplaceValue в классе AttributedImpl из главы 4:public void replaceValue(String name, Object newValue)throws NoSuchAttributeException{Attr attr = find(name);// Искать attrif (attr == null)// Если атрибут не найденthrow new NoSuchAttributeException(name, this);attr.valueOf(newValue);}Метод replaceValue сначала ищет имя атрибута в текущем объекте Attr.

Если атрибут не найден, то возбуждается объект-исключение типа NoSuchAttribiteException и его конструктору предоставляются содержательные данные. Исключения являются объектами, поэтому передиспользованием их необходимо создать. Если атрибут не существует, то его значение заменяется новым.Разумеется, исключение может быть порождено вызовом метода, внутри которого оно возбуждается.7.3. Условие throwsПервое, что бросается в глаза в приведенном выше методе replace Value, — это список проверяемых исключений, которые в нем возбуждаются.

ВJava необходимо перечислить проверяемые исключения, возбуждаемые методом, поскольку программист при вызове метода должен знать их втакой же степени, в какой он представляет себе нормальное поведение метода. Проверяемые исключения, возбуждаемые методом, не уступаютпо своей важности типу возвращаемого значения — и то и другое необходимо объявить.Проверяемые исключения объявляются в условии throws, которое может содержать список значений, отделяемых друг от друга запятыми.Внутри метода разрешается возбуждать исключения, являющиеся расширениями типа Exception в условии throws, поскольку всегда допускаетсяполиморфно использовать класс вместо его суперкласса. Метод может возбуждать несколько различных исключений, являющихсярасширениями одного конкретного класса, и при этом объявить в условии throws всего один суперкласс. Тем не менее, поступая таким образом,вы скрываете от работающих с методом программистов полезную информацию, потому что они не будут знать, какие из возможныхрасширенных типов исключений возбуждаются методом.

В целях надлежащего документирования условие throws должно быть как можно болееполным и подробным.Контракт, определяемый условием throws, обязан неукоснительно соблюдаться — можно возбуждать лишь те исключения, которые указаны вданном условии. Возбуждение любого другого исключения (прямое, с помощью throw, или косвенное, через вызов другого метода) являетсянедопустимым. Отсутствие условия throws не означает, что метод может возбуждать любые исключения; наоборот, оно говорит о том, что он невозбуждает никаких исключений.Все стандартные исключения времени выполнения (такие, как ClassCast Exception и ArithmeticException) представляют собой расширения классаRuntimeException.

О более серьезных ошибках сигнализируют исключения, которые являются расширениями класса Error и могут возникнуть впроизвольный момент в произвольной точке программы. RuntimeException и Error — единственные исключения, которые не нужно перечислятьв условии throws; они являются общепринятыми и могут возбуждаться в любом методе, поэтому компилятор не проверяет их. Полный списокклассов стандартных непроверяемых исключений приведен в Приложении Б.Инициализаторы и блоки статической инициализации не могут возбуждать проверяемые исключения, как прямо, так и посредством вызоваметода, возбуждающего исключение.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее