Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875

Как организовать исключение ввода-вывода в примере программы?

19.06.2019, 10:08. Показов 4841. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В учебнике «Шилдт Г. - Java 8. Руководство для начинающих», в главе 9 , разделе «Использование ключевого слова throws» приводится пример программы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
Использование ключевого слова throws
*/
class ThrowsDemo {
    public static char prompt(String str) throws java.io.IOException {
        System.out.println(str + ": ");
        return (char) System.in.read();
    }
    
    public static void main(String[] args) {
        char ch;
        
        try {
            ch = prompt("Введите букву");
        }
        catch (java.io.IOException exc) {
            // Перехват исключения
            System.out.println("Произошло исключение ввода-вывода!");
            ch = 'X';
        }
        System.out.println("Вы нажали клавишу " + ch);
    }
}
В учебнике подразумевается, что при вводе символа может произойти исключение ввода-вывода, которое будет обработано в блоке try/catch метода main.
Как не пыталась, так и не смогла найти такую клавишу, нажатие на которую сгенерировало бы исключение. Но раз пример приводится, значит должен быть способ. Подскажите, пожалуйста, кто знает как в результате работы этого кода можно увидеть в консоли «Произошло исключение ввода-вывода! Вы нажали клавишу Х».
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2019, 10:08
Ответы с готовыми решениями:

Реализовать программу файлового ввода-вывода на примере программы A+B.
Привет Форумчанам! возник такой вопрос, пытаюсь реализовать программу файлового ввода-вывода на примере программы A+B. Скажите, почему в...

Нюансы ввода/вывода: как правильно организовать ввод строки с пробелами?
Доброе время суток. Такой вопрос: у меня есть структура, содержащая ФИО, адрес, телефон, возраст. Хотелось, чтобы была возможность...

Исключение ввода/вывода
Пару дней назад работало все замечательно... Сегодня необходимо было подключится, выдало ошибку : Исключение ввода/вывода. БД локальная...

16
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
19.06.2019, 10:26
Исключение вылетает тогда, когда возникает ошибка ввода-вывода. Именно ошибка, т.е. процесс чтения мог прерваться, например, либо што-нибудь исчо, но если вы просто вводите какой-либо символ, то всё происходит именно так, как должно происходить
1
Заблокирован
19.06.2019, 10:41
alicesmagic3d, можно использовать универсальное исключения Exception, оно будет любые ошибки ловить. Исключения происходят при необычных операциях или данных.
На основе этого универсального исключения можно сделать такую программу, в которой вообще не потребуется использовать другие try catch, просто будет глобальный Exception уловитель для всей программы.

Добавлено через 9 минут
alicesmagic3d, а в вашей программе исключение не будет происходить даже если пустое значение ввести.
1
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
19.06.2019, 10:42
trgbvs, вот только если прилетит какое-нибудь исключение, для которого обработка не предусмотрена, то программа продолжит работать неправильно
0
Заблокирован
19.06.2019, 10:51
Gungala, это само собой, но при опреленных условиях можно сделать все так, что работать нормально будет. Все зависит от самого программиста.)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
19.06.2019, 10:57
Лучший ответ Сообщение было отмечено alicesmagic3d как решение

Решение

Цитата Сообщение от alicesmagic3d Посмотреть сообщение
Но раз пример приводится, значит должен быть способ.
не туда смотришь. Очень полезно читать документацию, в Идее можно просто нажать Ctrl+Q, наведя на read или зажав Ctrl кликнуть на read. Метод рид абстрактный у ИнпутСтрим, проще говоря он не знает какой именно источник ты будешь читать, это может быть файл, сокет и т.п. и там, как понимаешь могуть быть проблемы. То что в данном конкретном случае ты юзаешь ввод с клавиатуры ему без разницы, раз положено обработать возможные исключения, то надо обрабатывать. При вводе с клавиатуры вряд ли у тебя что-то вылетит.
2
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
19.06.2019, 11:04
Welemir1, так вот в чём прикол. А я чёт открыл документацию, вижу, что метод абстрактный и не могу понять, почему он тогда throws IOException

Добавлено через 2 минуты
trgbvs, мне всё-таки кажется, что делать блок catch с простым Exception — эт прост халтура
1
Заблокирован
19.06.2019, 11:13
Gungala, возможно и халтура, но благодаря этой халтуре я экономлю по сотне строк кода, программы получаются простые и быстрочитаемые и главное- все работает. Для меня главное- красивый и сверхпростой код, возможно это результат опыта, а возможно и то, что я просто горе-программист с 12 летним опытом, хотя конечно мне не важно мнение окружающих, я привык делать под себя, так проще. )
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
19.06.2019, 11:14
Цитата Сообщение от trgbvs Посмотреть сообщение
программы получаются простые и быстрочитаемые
это твое мнение или другие разработчики из команды тоже так считают?
0
Заблокирован
19.06.2019, 11:18
Welemir1, это всего-лишь мое мнение. А в командах не работал, мозги забивают конкретно. Видел также код многих программистов, которые писали код новичкам, но к сожалению не смог прочитать из-за большого числа лишнего кода. Хотя конечно встречался и с красивым кодом, но это не так часто, банально спешат люди и нет времени на рефакторинг, вот и имеем, что имеем.
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
19.06.2019, 11:21  [ТС]
Мудрено, но в целом понятно Спасибо большое всем!!!
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
19.06.2019, 11:22
Цитата Сообщение от trgbvs Посмотреть сообщение
это всего-лишь мое мнение.
можешь дать ссылку на свой гитхаб, тут на форуме много разрабов действующих, посмотрим, оценим читаемость и понятность.
есть у меня определенные подозрения, учитывая, что в большинстве случаев правильнее перехватывать именно конкретное исключение, а не все подряд.
0
Заблокирован
19.06.2019, 11:31
Welemir1, код просто так никому не даю, меня нету ни в каких гитхабах и т.п. модных сайтах, поэтому считайте, что я новичок-середнячок в программировании. Так спокойнее будет и для меня и для вас. )

Добавлено через 5 минут
Welemir1, исключения надо перехватывать- с этим согласен. Просто бывает такое, что можно обойтись и меньшим количеством, избавив код от лишних конструкций, тем более try catch усложняют читаемость кода. Возможно я говорю, как вообще не знакомый с программированием человек, но прикол в том, что программу можно упростить очень сильно, причем она будет выглядеть нестандартно, но в тоже время очень просто, таким образом ее очень просто можно будет читать и модифицировать.

Добавлено через 2 минуты
Welemir1, я видел много проектов, в которых по 60-100кб кода, а потом сам пробовал делать и получалось, что элегантный код весит не более 5кб. Вот такая магия происходит, если уметь упрощать код и делать его читаемым. Это очень трудно, но поверьте, игра стоит свечь.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
19.06.2019, 11:37
trgbvs, странный ты человек, все о каких то высоких материях толкуешь, так покажи - покажи красивый, простой, читаемый код для задачи сложнее "Привет, мир!", а то пока выглядит как реклама. Раз уж сам утверждаешь что тебе удается такой писать.

Цитата Сообщение от trgbvs Посмотреть сообщение
меня нету ни в каких гибхабах и т.п. модных сайтах
он так то появился 11 лет назад и теперь не модный. С системами контроля версий знаком?

Цитата Сообщение от trgbvs Посмотреть сообщение
считайте, что я новичок в программировании
договорились
0
Заблокирован
19.06.2019, 11:38
Welemir1, в некоторых программах можно перехватывать все подряд. Я в своих проектах много раз так делал, главное, что это работает, а не то, как к этому относится большинство.
0
19.06.2019, 11:45

Не по теме:

Цитата Сообщение от trgbvs Посмотреть сообщение
меня нету ни в каких гитхабах и т.п. модных сайтах
:facepalm:
Цитата Сообщение от trgbvs Посмотреть сообщение
60-100кб кода, а потом сам пробовал делать и получалось, что элегантный код весит не более 5кб
ща бы код по количеству строк оценивать
Цитата Сообщение от trgbvs Посмотреть сообщение
если уметь упрощать код и делать его читаемым
Цитата Сообщение от trgbvs Посмотреть сообщение
можно использовать универсальное исключения Exception
как бы взаимоисключающие параграфы же
Цитата Сообщение от trgbvs Посмотреть сообщение
с 12 летним опытом
клепание сайтиков на вордпресе в одно лицо - это не стаж программиста

0
Заблокирован
19.06.2019, 11:48
xoraxax, спасибо большое, вы умеете похвалить человека. Успехов вам!

Добавлено через 38 секунд
Welemir1, спасибо за уважительный и конструктивный диалог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2019, 11:48
Помогаю со студенческими работами здесь

Можно ли организовать перенаправление ввода-вывода в JavaScript?
Подскажите!!!!!!! Можно ли организовать перенаправление ввода-вывода в JavaScript например сделать запись в текстовый файл, ...

Подскажите,как составить код для написание программы ввода 16ти значного числа и вывода
1. Подготовьте и отладьте программу для ввода трехзначного числа с клавиатуры в 10-ой системе счисления. Продемонстрируйте работу ...

Как перехватить поток ввода-вывода одной программы через другую (межпроцессорного обмена данными)?
Ребята, извиняюсь за некорректность возможную, поскольку я совсем-совсем новичок. у меня есть программа межпроцессорного обмена данными....

Нашёл на сайте код вывода рекламы, а как в него добавить исключение вывода в определённом посте?
Доброго времени суток, уважаемые гуру. Как в найденном на просторах сети коде добавить исключение вывода рекламной записи для...

База данных. Ошибка при подключении "Исключение ввода/вывода"
Есть удаленная база данных oracle 11g на centOS. при подключение выдает ERROR org.hibernate.util.JDBCExceptionReporter - Исключение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru