powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
19 сообщений из 69, страница 3 из 3
Возможно ли такое использование исключеий..
    #38972223
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто будет если в блоке обработки исключений возникает новое исключение? В данном
псевдо-бейсике?

mayton, пять баллов. Ты поймал пойнт.

в момент перехода на метку открывающую блок кода обработки ошибки, взводится глобальное состояние "я, система исполнения нахожусь в состоянии восстановления (ошибки)".
По памяти, примерно вот что происходит.
Эта зона вне перехвата ошибок. Любая ошибка, происходящая в текущем контексте не может быть перехвачена в нем же и (если) возникающая ошибка прерывает выполнение текущего контекста, передавая управление вызывающему контексту, если он есть, где начинает действовать обработчик ошибки вызывающего контекста, если он установлен. иначе краш программы.
Поэтому, непосредственно внутри блока обработки ошибки их, ошибок не предполагается.
Если необходимо, чтобы восстанавливающий ошибочное состояние код обязательно отрабатывал в "нормальном" глобальном состоянии, а не в глобальном состоянии "обрабатываю ошибку", то применяют либо двойное goto (где первое из них - это resume, а второе goto должно магическим образом знать, куда осуществлять переход.
либо используется on error goto -1, который отключает глобальный режим "обрабатываю ошибку" в последовательности команд, на которую был осуществлен переход по ошибке после ранее установленного on error goto label.

авторДавайте порассуждаем.

Как может быть достигнуто такое поведение?

Каждый оператор который (потенциально выбрасывает исключение) должен быть обёрнут
в do{..}while() ?

технически стартовой точкой для воспроизведения простой resume-механики может быть код вида

label: do{... if (is_error) {break label;} else {break;} while(1=1)
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972270
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
label:

походу - первым же кликом нашлось предложение от 2012 года - JSR: 901 MR
о реализации в яве явного goto
Автор(ы) понимают, что что уже не успевают в восьмерку со своим предложением.
Но считают, что реализовать надо обязательно.
По их мнению, не менее 25% кодовой базы, выписанной в виде циклов, требует
переписывания с использованием goto.
Так что, к девятке ждите. Тогда и с бейсиком в яве полегчает.

https://blogs.oracle.com/darcy/entry/upcoming_jep

PS
если и правда сделают, то у явы может оказаться серьезное будущее.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972271
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby,

посмотри на дату публикации
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972335
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972383
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
вопросы:
возможен ли перход из catch в середину try?
сохранены ли значения остальных полей ?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972636
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Если бы мне кто-то пожаловался на то, что трудно писать приложение, поскольку отсутствует GoTo, я бы ответил, чтобы он перепроектировал свой проект с нуля, потому, что такой извращенный код для обработки ошибок можно использовать только там , где стоимость потерянных данных равна 0 копеек. Кстати, такой случай был, но я просто посоветовал подумать о том, что язык проектировался не дураками.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972648
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskinвадя,

Если бы мне кто-то пожаловался на то, что трудно писать приложение, поскольку отсутствует GoTo, я бы ответил, чтобы он перепроектировал свой проект с нуля, потому, что такой извращенный код для обработки ошибок можно использовать только там , где стоимость потерянных данных равна 0 копеек. Кстати, такой случай был, но я просто посоветовал подумать о том, что язык проектировался не дураками.
последний раз когда я использовал goto это был ассемблер для 580
но в данном варианте goto имеет несколько другой смысл (я про VBA)
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972650
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадянадо возврат назад...
а зря такого нет в java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
search:
    for (i = 0; i < arrayOfInts.length; i++) {
        for (j = 0; j < arrayOfInts[i].length; j++) {
            if (arrayOfInts[i][j] == searchfor) {
                foundIt = true;
                break search;
            }
        }
    }
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972654
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174вадянадо возврат назад...
а зря такого нет в java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
search:
    for (i = 0; i < arrayOfInts.length; i++) {
        for (j = 0; j < arrayOfInts[i].length; j++) {
            if (arrayOfInts[i][j] == searchfor) {
                foundIt = true;
                break search;
            }
        }
    }


это я знаю, но это совсем не то, что я спрашивал.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972666
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

более близкого к goto врядли найдеш,
значит надо реорганизовать свой код так, чтобы использовать label, если таки надо желать ход конем назад
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972672
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174вадя,

более близкого к goto врядли найдеш,
значит надо реорганизовать свой код так, чтобы использовать label, если таки надо желать ход конем назад
мне надо не просто назад вертуться мне надо поймать исключение.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972675
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадямне надо не просто назад вертуться мне надо поймать исключение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
		int i=0;
		boolean flag = false;
		
		label: while (i<10) {
			
			try {
				
				System.out.println(i);
				
				if(!flag) {
					if(i==5) System.out.println(1/0);
				}
				
				i++;
				
			} catch (Exception e) {
				flag = true;
				System.out.println("catched");
				continue label;
			}
		}
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972680
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

как вариант, но костыль
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972683
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

так goto это и есть костыль, который в джаве не используется )
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972695
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174вадя,

так goto это и есть костыль, который в джаве не используется )
Он существует в виде опкодов goto(0xa7) и goto_w(0xc8) на уровне спецификации
jvm как ни странно. Знающие люди хотя-бы раз открывали этот документ и вкурсе.
А люди незнающие - распростаняют и множат заблуждения.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972698
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174вадямне надо не просто назад вертуться мне надо поймать исключение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
		int i=0;
		boolean flag = false;
		
		label: while (i<10) {
			
			try {
				
				System.out.println(i);
				
				if(!flag) {
					if(i==5) System.out.println(1/0);
				}
				
				i++;
				
			} catch (Exception e) {
				flag = true;
				System.out.println("catched");
				continue label;
			}
		}


в данном случае метка label лишняя.
такой вариант
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  int i = 0;

label:
        try {
            System.out.println(i);

            System.out.println(1 / i);

        } catch (Exception e) {

            System.out.println("catched");
            i=3;
            continue label;
        }


как более логичный, но не откомпилируется

в конечном результате 17712315 отличается от 17708664 только разным применением while
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972702
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonrema174вадя,

так goto это и есть костыль, который в джаве не используется )
Он существует в виде опкодов goto(0xa7) и goto_w(0xc8) на уровне спецификации
jvm как ни странно. Знающие люди хотя-бы раз открывали этот документ и вкурсе.
А люди незнающие - распростаняют и множат заблуждения.

а что толку что оно есть "на уровне спецификации"?
если goto нет возможности использовать явно, значит не просто так это сделано
mayton, вместо того чтобы писать "околовсячину" почитай чтоли вот это
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне неинтересно читать ссылки на чужие аргументы.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972708
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonМне неинтересно читать ссылки на чужие аргументы.

тогда вопросов нет ))
...
Рейтинг: 0 / 0
19 сообщений из 69, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]