powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
25 сообщений из 69, страница 2 из 3
Возможно ли такое использование исключеий..
    #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
25 сообщений из 69, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли такое использование исключеий..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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