powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
69 сообщений из 69, показаны все 3 страниц
Возможно ли такое использование исключеий..
    #38971233
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть try()catch()
в try есть возможность возникновение ошибки если я её обработаю, можно ли вернуться в и продолжить код с того места где возниклоисключение (в обработке исключения я устранил возможность возникновения исключения)
в access такое возможно и используется
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971247
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяесть try()catch()
в try есть возможность возникновение ошибки если я её обработаю, можно ли вернуться в и продолжить код с того места где возниклоисключение (в обработке исключения я устранил возможность возникновения исключения)
в access такое возможно и используется

а так?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
try{
//код
 try{
//возможность возникновение ошибки 
}catch(){
//обработал 
}
//дальше код

}catch(){

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

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

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

а что там сзади, что так туда надо?
сзади - это возврат в точку возникновения исключения, ты обработал исключение - изменил что-то и тебе надо продолжить выполнение с точки возникновения(повторить команду вызвавшую исключение, его уже не будет ) и продолжить код дальше.
т.е. не делать проверку на правильность чего-либо,
к примеру если в цикле производится что-то и каждый раз происходит проверка, а ты знаешь, что ошибка может возникнуть в 1 из 100 (к примеру) цилов ( а может и не возникнуть) - зачем делать лишнее действие (проверку) когда можно произвести действия по исправления этой ошибки и продолжить дальше.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971308
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяfercвадя,

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

ну, например, вот так можно:


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Test {
    private int i = 0;

    public void exceptionMothod(){
        try {
            System.out.println("i = "+i);
            if (i == 0) {
                System.out.println("throw new Exception");
                throw new Exception("test");
            }
        }catch (Exception e){
            System.out.println("Exception: "+e);
            i=2;
            exceptionMothod();
        }
    }
}
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971315
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fercну, например, вот так можно:
рекурсию я бы в цикл всё-таки развернул
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971377
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferc
ну, например, вот так можно:


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Test {
    private int i = 0;

    public void exceptionMothod(){
        try {
            System.out.println("i = "+i);
            if (i == 0) {
                System.out.println("throw new Exception");
                throw new Exception("test");
            }
        }catch (Exception e){
            System.out.println("Exception: "+e);
            i=2;
            exceptionMothod();
        }
    }
}


ну как частный случай костыля можно ...
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971413
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесть try()catch()
в try есть возможность возникновение ошибки если я её обработаю, можно ли вернуться в и продолжить код с того места где возниклоисключение (в обработке исключения я устранил возможность возникновения исключения)
в access такое возможно и используется

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public void doIt() {
    for (int i = 0; i < maxRetryCount; i++) {
        try {
            tryDoIt();
        } catch (MyException e) {
            // fix
        }
    }
}

public void tryDoIt() throw MyException() {
    ...
}
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971434
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
это всё равно не то.
к сожалению...
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Java серверный ЯП. Там потоки, а не ГУИ с повтором действий.
Мне сложно придумать твой кейс на сервере. Есть JS\Delphi\....
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971647
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAlexey Tomin,
это всё равно не то.
к сожалению...

Ты хочешь выполнить прямо ту операцию, которая упала?
Ну значит вынеси её в отдельный метод и оберни её в такую штуку.
Вообще если что-то хоть как-то требует обособления- это хороший повод вынести в отдельный метод.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971662
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
Java серверный ЯП. Там потоки, а не ГУИ с повтором действий.
Мне сложно придумать твой кейс на сервере. Есть JS\Delphi\....

Легко. Пример из моей жизни.
Дёргаем сервер, у которого есть авторизация и внезапно (в неизвестное нам время) кончаются сессии.
Куча операций, каждая может обломится из-за "session expired". При этом надо заново залогинится и повторить последнюю операцию.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971666
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
do {
 try{
   ...
 catch(...){
    cond = true;
 }
while(!cond);
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971735
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
согласен. Я утрировал, т.к. вернуться в предыдущее состояние бывает не так просто.
У меня в сотовом СМСка в тоннеле метро не отправляется пока не выеду)).
Правда, там ствится период-дата следующей попытки).
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971738
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
+1
самое красивое и лаконичное
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971744
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не люблю синтаксис исключений. Избыточный он. Вот
создатели GoLang каким-то образом избавились от них.

Интересно какой ценой? И как они решают общие (general)
вопросы связанные с ловушками неизвестных ошибок.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971751
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
я использую только для проброски наверх и остановки стека выполнения (длинного).
Ну и чтобы отвязаться от другого программиста, если он неправильно меня вызывает))
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971766
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mayton,
+1
самое красивое и лаконичное
+1
соглашусь, но всё равно, это не то.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971771
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя и есть некоторые преимущества с первоначальным "эталоном"
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971791
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяхотя и есть некоторые преимущества с первоначальным "эталоном"
нет золотой пули.
Ты ещё аннотацию поищи на бесконечное долбание процедурой без устали).
Сам даже не сказал где применяется.
Исключения - одно, циклы другое.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971831
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяPetro123mayton,
+1
самое красивое и лаконичное
+1
соглашусь, но всё равно, это не то.

Объясни, что "не то"?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971865
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominОбъясни, что "не то"?
Всё не то. :D
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971874
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Куча операций, каждая может обломится из-за "session expired". При этом надо заново залогинится и повторить последнюю операцию. "
Ваш вариант - это "начать все сначала". Ну или с сейвпоинта(они вроде есть в скале). Автор хочет, насколько я понял, начать с той же точки в середине функции, где исключение возникло.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971919
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не то - слишком много дополнительных строк.
всё сгруппировано вокруг обрабатываемой строки.
для цикла я привёл как пример
в аксесс "стоимость" такой операции очень мала, в некоторых случаях - это даже основное правильное решение.

вариант 17705803 действительно "лаконичен", но его "стоимость " намного выше.
но я беру предложенный вариант на заметку.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971930
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причина возникновения этого вопроса :
текущий проект, одна из таблиц формируется в памяти, соответственно при перезагруки её нет, а один блок на одной из страниц основан на ней. в продакшене на дебиан запускаю хранимку, которая строит эту таблицу и как-бы всё нормально, но вот при разработке под окнами это решение на подходит.
и частенько забываю вручную произвести запуск этой хранимки, кусок кода вылетает в исключение ..и всё.
а достаточно при этом исключении запустить хранимку и повторить действие .
да и для продакшена тоже будет выгода - не надо помнить/писать инструкцию о необходимости вносить нестандартную запись в ini файл mysql.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971933
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпричина возникновения этого вопроса :
текущий проект, одна из таблиц формируется в памяти, соответственно при перезагруки её нет, а один блок на одной из страниц основан на ней. в продакшене на дебиан запускаю хранимку, которая строит эту таблицу и как-бы всё нормально, но вот при разработке под окнами это решение на подходит.
и частенько забываю вручную произвести запуск этой хранимки, кусок кода вылетает в исключение ..и всё.
а достаточно при этом исключении запустить хранимку и повторить действие .
да и для продакшена тоже будет выгода - не надо помнить/писать инструкцию о необходимости вносить нестандартную запись в ini файл mysql.

1. Решать надо изначальную проблему. Банально- локально всё одно код отличается- вот и надо запускать локально хранимку.

2. Прошляпил выполнение хранимки- не жалуйся, что exception надо ловить.

3. Я не понимаю, почему ты говоришь, что этот код много времени займёт. Надо оборачивать в while+try не создание страници, а первую операцию по заполнении проблемного блока.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971944
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Решать надо изначальную проблему. Банально- локально всё одно код отличается- вот и надо запускать локально хранимку.

2. Прошляпил выполнение хранимки- не жалуйся, что exception надо ловить.

3. Я не понимаю, почему ты говоришь, что этот код много времени займёт. Надо оборачивать в while+try не создание страници, а первую операцию по заполнении проблемного блока.
3 - я не говорю, что время много займет, я говорю о "общей стоимости" - дополнительные строки, понижение читабельности кода и т.д.
2 - с этим никто не спорит, по логике акса это нормальное состояние - обработал , исправил, вернулся продолжил.
1 - надо запускать локально хранимку - да надо, можно сделать в блоке инициализации, но когда куча файлов в проекте - проще чтоб всё логически связанное было в одном месте.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971948
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяхотя и есть некоторые преимущества с первоначальным "эталоном"
Это про какой такой "эталон" ты толкуешь?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971959
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonвадяхотя и есть некоторые преимущества с первоначальным "эталоном"
Это про какой такой "эталон" ты толкуешь?
ну который я встретил в аксессе....
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38971974
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяну который я встретил в аксессе....
покажи или дай ссылку.
Конкретнее.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972010
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяну который я встретил в аксессе....
покажи или дай ссылку.
Конкретнее.
ну конкретно показать не могу, акесом перестал заниматься лет 10 назад.
если смогу найти - приведу пример.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972021
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если мне память не изменяет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Sub test3()
  On Error GoTo mEr
  Dim a As Long, b As Long
  b=0

  a = 3 / b

  Exit Sub

mEr:
   b = 3
  Resume
End Sub
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972032
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на строке
a = 3 / b
будет ошибка
исправляем
b = 3
возвращаемся
Resume
продолжаем выполнение с a=1
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972033
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
про GoTo в VBA и вспоминать не надо.
И про стоимость данной операции))
Сразу бы сказал эту волшебную фразу).
Access в данном топике совсем ни при чём.
Удачи!
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972050
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
про GoTo в VBA и вспоминать не надо.
И про стоимость данной операции))
Сразу бы сказал эту волшебную фразу).
Access в данном топике совсем ни при чём.
Удачи!
это не важно - решение подсказали.
в данном применении GoTo не совсем GoTo :)
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972052
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прикольный инструмент, призванный компенсировать отсутствие квалификации. синтаксический сахар с длинным названием "я х.з. где тут может произойти ошибка, если таки жахнет, вернись примерно сюда и попробуй снова, вдруг проканает" . а где в этом чудесном механизме защита от зацикливания? вдруг ошибка вечная
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972055
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это шило на мыло: в модели возобновления обработчику требуется как-то узнавать - а где мы были, пока были шариком?
Что, в общем, не слаще редьки.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972059
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли мне память не изменяет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Sub test3()
  On Error GoTo mEr
  Dim a As Long, b As Long
  b=0

  a = 3 / b

  Exit Sub

mEr:
   b = 3
  Resume
End Sub


У меня несколько вопросов. Данный сахар предполагает что после входа в блок mEr:
мы должны выполнить b=3 и вернуться на line где произошла ошибка (опкод/байткод?)
или повторно войти в процедуру test3 ?

Каковы возможности конструкции "On Error GoTo mEr". Можем ли мы управлять классами
ловушек. Тоесть ловить отдельно IO-исключения? Отдельно исключения арифметки?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972081
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonвадяесли мне память не изменяет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Sub test3()
  On Error GoTo mEr
  Dim a As Long, b As Long
  b=0

  a = 3 / b

  Exit Sub

mEr:
   b = 3
  Resume
End Sub


У меня несколько вопросов. Данный сахар предполагает что после входа в блок mEr:
мы должны выполнить b=3 и вернуться на line где произошла ошибка (опкод/байткод?)
или повторно войти в процедуру test3 ?

Каковы возможности конструкции "On Error GoTo mEr". Можем ли мы управлять классами
ловушек. Тоесть ловить отдельно IO-исключения? Отдельно исключения арифметки?
если поставить такое в начале то вывалится где угодно.
при грамотном использовании их ставят пред тем оператором который хотят "защитить" - полная аналогия с try.
обработчику не требуется знать , он просто знает(прогер подсказывает, так же как и у try),
Resume возвращает в точку возникновения ошибки и выполняет эту строку повторно с новыми параметрами.
таких On Error GoTo xxxxx можно ставить скольугодно, хоть перед каждо строкой :) и соответственно столько же обработчиков
при возникновении ошибки в обработчик передается вся инфа об ошибке - код, описание и пр.
правильная обработка должна содержать проверку ошибки и если ошибка деление на нуль (как в примере) присвоить в=3 и вернуться повторного запуска процедуры не требуется , если код ошибки другой - завершить Sub (как вариант).

мы можем поставить if или case и обработать все варианты ошибок и соответственно сделать нужные действия и
вернуться в точку образования ошибки
перейти на следующую строку Resume next
перейти на любую другую строку.

защита от зацикливания - продуманность прогера. это как и в любом другом месте...
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972084
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожем ли мы управлять классами
ловушек. Тоесть ловить отдельно IO-исключения?
если мне память не изменяет - то ошибки имеют "классы"
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972087
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

это не сахар, это содержательный синтаксис с собственной семантикой.

автормы должны выполнить b=3 и вернуться на line где произошла ошибка (опкод/байткод?)
или повторно войти в процедуру test3 ?
в данном случае - точно на ту строку, в которой произошла ошибка
resume next - проигнорировать строку, в котрой была ошибка и продолжить со следующей
resume line - продолжить выполнение со строки line (номер строки или именованная метка)

авторКаковы возможности конструкции "On Error GoTo mEr". Можем ли мы управлять классами
ловушек. Тоесть ловить отдельно IO-исключения? Отдельно исключения арифметки?

on error goto 0 - отключает текущий обработчик
on error resume next - при ошибке игнорировать ее и пепеходить к выполнению следующей строки
on error goto line - устанавливает текущий обработчик на код, начинающийся со строки line (обычно именованная метка, но вроде номер строки допускается)
on error goto -1 - спец. инструкция, используемая в "блоке" обработки ошибки. спец вид resume ( по памяти) (подробности в акцессном форуме)

отдельно ловить (обрабатывать) IO и отдельно арифметику можно, если это разнесено в разные блоки кода
текущий установленный обработчик - всегда один - установить гроздь одновременно активных обработчиков нельзя.

не сахар потому, что в тот момент, когда система попадает в блок обработки ошибки по goto от On Error,
исполняющая система находится в специальном глобальном состоянии, которое завершается по выполнении resume.

так работают vba, classic vb, в vb.net сохранена возможность воспользоваться этой механикой по желанию разработчика, или структурированными исключениями.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972094
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2booby , спасибо, напомнил подробности...
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972171
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать со свичём на состояние, вроде такого:

Код: java
1.
2.
3.
4.
5.
6.
7.
int state = 0

switch (state) {
    case 0 : operation1(); state++;
	case 1 : operation2(); state++;
	...
}



Хотя вариант, конечно, не самый красивый. Вообще странно, что нет механизма "возврата к предыдущему состоянию". В сишарпе ещё хуже, там нужно будет такой свитч ещё и в цикл обернуть.
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972183
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте порассуждаем.

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

Каждый оператор который (потенциально выбрасывает исключение) должен быть обёрнут
в do{..}while() ?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972186
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДавайте порассуждаем.

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

Каждый оператор который (потенциально выбрасывает исключение) должен быть обёрнут
в do{..}while() ?
в общем-то да. если нам нужна такая обработка с возвратом
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972188
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что будет если в блоке обработки исключений возникает новое исключение? В данном
псевдо-бейсике?
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972190
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
там также можно сделать такую обработку, и так до ...
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #38972199
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так правильно

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
boolean cond ;
do {
 try{
//строка вызывающая исключение
cond = true;
   ...
 catch(...){
    cond = false;
 }
while(!cond);
...
Рейтинг: 0 / 0
Возможно ли такое использование исключеий..
    #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
69 сообщений из 69, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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