powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать имя sub
17 сообщений из 42, страница 2 из 2
Как узнать имя sub
    #39848418
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin.... который не разбирается в Акцессе и не полезет в отладчик.... А вот информация,которая выведется в окне(как на Вашем скрине)ему о многом скажет и он запросто восстановит работу программы
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848422
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuА вот информация,которая выведется в окне(как на Вашем скрине)ему о многом скажет и он запросто восстановит работу программы
Нет, обычно просто присылается разработчику в виде скриншота, ему это много что скажет. Если обработка ошибок написана правильно, то работа всего приложения нарушается очень редко и можно продолжать тестирование
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848427
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЧестно говоря, не ожидал от Вас такого ответа :)

Просто есть разные подходы, у меня такой:

1. Общий алгоритм (ТЗ) если он ущербен, обработчик ошибок не имеет смысла.
2. Рабочий алгоритм - это способ реализации Общего алгоритма (ТЗ), как правило имеет модульную структуру, каждый модуль многократно тестируется в автономном режиме до момента его устойчивого рабочего состояния, многие из них берутся уже в готовом, отлаженном виде, например отсюда. После этого достаточно по одному обработчику на модуль на форс мажор для ...
sdkuРазве что непредвиденные ошибки
3. Ну и отделяем мух от котлет - отлаженный алгоритм требует на вход корректных данных, это называется контролем входных данных, который никакого отношения к обработке ошибок общего алгоритма не имеет...
Как раз те кто игнорируют качество пунктов 2 и 3 попадают на грабли: не рабочий алгоритм + отсутствие контроля входных данных...
sdkuпередавать такую программу заказчику
НЕЛЬЗЯ ! Это ставить на себе крест...
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848429
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тестирование проводится до передачи продукта клиентам (если передать до тестирования-навряд ли к Вам повторно обратятся)
Конечно для ACCESS все попроще будет,но основные положения надо блюсти
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848439
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я абсолютно согласен, что конечный пользователь не должен видеть сообщений с технической информацией, это огромный минус и катастрофа, поэтому основное предназначение - этап тестирования и корректное завершение работы при системных сбоях.
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848445
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конце концов приходим к этому:(написано вчера в 12.35)
sdkuСтесняюсь спросить:а зачем?
Если ошибка в коде то это не код
Если ошибка возникает в результате действий пользователя то код и пишется для того чтоб этого избежать (часто "защита от дурака" занимает намного больший объем чем "полезный" код)
обработчик ошибок обязан присутствовать в сколь-нибудь "серьезном" коде.
Единственное-отключение питания. В зависимости от важности информации применяют ИБП
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848599
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuВ конце концов приходим к этому
Основной причины нет - тестирования. Любое последующее изменение может приводить к неожиданным ошибкам, которые тоже нужно выловить и исправить.
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848609
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinsdkuВ конце концов приходим к этому
Основной причины нет - тестирования.+1
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848611
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIcourtНо, реально, в ВБА, сделать такое "по-простому" не получится.
Разве что, писать какой-то парсер модулей, который будет "бегать" по процедурам, нумеровать строки, определять наименование подпрограммы и прописывать блок обработки ошибок
Опять повторюсь
--Зачем такие извращения!?
Alecko вам даже ссылку дал (изучайте)
Что доктор прописал.смешной ты, алвк :)
дык, по той ссылке, именно то, что я выше и "расписал", с точностью до имён процедур :))
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848644
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtROIпропущено...

Опять повторюсь
--Зачем такие извращения!?
Alecko вам даже ссылку дал (изучайте)
Что доктор прописал.смешной ты, алвк :)
дык, по той ссылке, именно то, что я выше и "расписал", с точностью до имён процедур :))
Смешной ты (я про нумерацию строк)
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848682
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court, что-то не слышал про стандартную процедуру "GlobalErrHandle" - в аксе по F1 в справке нет ничего, здесь тоже , и эта процедура как понимаю лишь разделяет режимы отладки да работы. mrShin ещё раз привел свои наработки.пока не попробуешь их думаешь куда столько кода, а в реальности там именно так как и пишет vmag - одна процедура на модуль, да и то не на каждый. в обычных процедурах пара строк.
я запоминаю имя процедуры путем присвоения её имени public переменной (в которой процедуре ошибка произошла - та и осталась в этой переменной) - не очень удобно, однако в этом случае остальной модуль обработки становится неизменяемым, использую обычный текстовый редактор (не mztoolz), с которого копирую все в новый модуль. лишь меняю название процедуры.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
const Open_Fields_for_C0ntrol =true' =true - режим отладки в этом случае не нужно комментировать debug.assert как в способе от MrShin _ достаточно поставить эту переменную в false
Public MistakeFunction$
Const M1StakeAmmounce$ = "Bubble of cmclParserf0rAll"' стандартная фраза для лога для этого модуля

' это обработчик который ставится в каждую процедуру
Private sub mysub()
MistakeFunction = "mysub"
On Error GoTo handle1

ex1:
...
Exit Sub
handle1:
If Open_Fields_for_C0ntrol Then
    Stop 
    Resume
End If
 Err.Raise Err.Number, M1StakeAmmounce, Err.Description & " at " & Erl ' Erl практически не использую
Resume ex1
end sub


переменную в которой сохранено имя процедуры можно и не вытаскивать далеко а сделать типа M1StakeAmmounce & chr(32) & MistakeFunction
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848689
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckocourt, что-то не слышал про стандартную процедуру "GlobalErrHandle"
дык, она никакая и ни стандартная :)
Это была "иллюстрация идеи" :)
Собственно эта функция то, что в коде MrShin представляет собой функция LogError
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848721
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,

Да, хорошее тестирование - залог успеха...
Стоит только временно заремить строку On Error GoTo в проблемной процедуре, тут же получишь строку на которой споткнулся алгоритм...

Большие и сложные модули для удобства можно разбивать на условные этапы и ловить ошибки по этапно:


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Sub1
On Error Goto er1
' Операторы Этапа 1
' ....
' Операторы Этапа 1

On Error Goto er2
' Операторы Этапа 2
' ....
' Операторы Этапа 2
Exit Sub
er1:
' Ошибка в Sub1 Этап 1
Exit Sub
er2:
' Ошибка в Sub1 Этап 2
End Sub1


...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848799
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята,а Вам не кажется,что топик перерос в обсуждение способов отладки (тестирования), и не зависимо от того как (существует "мильон" вариантов:кто как считает нужным и как может-топика явно не хватит для рассмотрения всех способов), хочется подчеркнуть что этот этап крайне важен и безусловно обязателен
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848923
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckoне нужно комментировать debug.assert как в способе от MrShin _ достаточно поставить эту переменную в false
Так и в случае с Debug.Assert тоже ничего комментировать не надо, достаточно любую из переменных STOP_AT_ERROR или IS_DEV поставить в False. Я хоть и пишу, что эти отладочные строки нужно удалить в релизе, реально никогда этого не делаю.
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848924
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagСтоит только временно заремить строку On Error GoTo в проблемной процедуре, тут же получишь строку на которой споткнулся алгоритм
Это работает, если тестируешь сам. Для отдельного тестера это не вариант.
...
Рейтинг: 0 / 0
Как узнать имя sub
    #39848939
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЭто работает, если тестируешь сам.

Из лично моей практики, утвердилось правило: хочешь сделать хорошо - сделай сам...

Особенно это правило работает в разрезе проектов Access, я так думаю процентов 99 готовых проектов в этой области делали одиночки, ну мне так кажется...
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать имя sub
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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