Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Здравствуйте !! Есть некий блок кода : try try except on E: Exception do begin Raise Exception.Create(E.Message); end; end; finally end; С великим удивлением обнаружил, что Exception генерится, но не показывается на мониторе, хотя в отладчике видно честно и затем честно отрабатывается блок finally .... Или я не прав ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 16:03 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Обычно так пишут Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 16:10 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
ну а я как написал !! так же :)) просто я не стал нагружать кодом !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 16:11 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Нет, ну отличия то есть, ты создаешь новое исключение с классом TException, а я делаю reraise для возникшего исключения. А обработчик TApplication.OnException у тебя есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 16:23 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
TApplication.Exception у меня нет И как ты посоветовал, тоже не работает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:06 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
кстати в "твоем" случае Raise вообще ничего не пытается даже показать. Except честно перехватывает ошибку и все ... А в моем случае эта ошибка показывается в отладчике но не на мониторе ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:11 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Положи на главную форму компонент TApplicationEvents и в обработчике события OnException напиши: Код: plaintext 1. 2. 3. И теперь проверь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:15 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
кстати в "твоем" случае Raise вообще ничего не пытается даже показать. Except честно перехватывает ошибку и все ... А в моем случае эта ошибка показывается в отладчике но не на мониторе ... Не уж то и finally не заходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:20 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Странно но он даже не вызвался. Я тут еще два try нашел выше. Всего получилось 6. Если все закоментарить, то exception показывается ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:25 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Я тут еще два try нашел выше. Всего получилось 6. Эт нафига их так много, давайвесь код. Интересно стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:26 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
в том то дело что доходит ... но предыдущего exception тютю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:27 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
только сильно ногами не бейте :) насчитал 4: 1. try/finally - BeginTrans/Rollback 2. BitBtn1.OnClick := Nil; / BitBtn1.OnClick := BitBtn1Click; 3. try/finally Обработка формы функции FormWait 4. сама обработка ошибки передачи try Form1.ADO.BeginTrans; try BitBtn1.OnClick := Nil; StartWait; With QLocal do begin First; While Not Eof do begin If DateIndex.IndexOf(QLocal.Fields.AsString) <> -1 then begin try FormWait(0,'ПЕРЕДАЧА ДАННЫХ ЗА '+QLocal.Fields.AsString,False); Application.ProcessMessages; .... Close; Sql.Clear; Sql.Add('EXEC AddKartDate '); try Application.ProcessMessages; Open; If Fields[0].AsInteger <> 0 then begin StopWait; Raise Exception.Create(' Ошибка передачи !!! Код ошибки: '+Fields[0].AsString); end; except on E: Exception do begin StopWait; Raise Exception.Create('ОШИБКА ВЫПОЛНЕНИЯ '+E.Message); end; end; finally FormWait(1,'ПЕРЕДАЧА ДАННЫХ ЗА '+Fields.AsString,False); end; end; Next; end; end; finally BitBtn1.OnClick := BitBtn1Click; StopWait; end; Form1.ADO.CommitTrans; Form1.Memo.Lines.Add('OK'); Form1.Memo.Lines.Add(Chr(13)+Chr(10)+'Время завершения '+TimeToStr(Now)); ShowMessage('ГОТОВО !!!'); except Form1.ADO.RollbackTrans; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:39 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
самое интересное, что тогда транзакция откатывается и userы начинают меня убивать .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 17:48 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Правильно - а еще лучше повесить :) Нахрена ты из клиента транзакции вызываешь? Напиши хранимую процедуру на сервере, в ней и открывай/закрывай транзакции. А уж из клиента просто вызывай ХП и все. ЗЫ Нет, придется все же книгу писать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 18:31 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Блин, ну ты намелчил. Че с форматированием то не сделал. Самый главный вопрос. Почему ты всю эту обработку делаешь на клиенте. Ей прямое направление на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 18:33 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
2 bigman Вот тебе для примера кусок кода, которым я закрываю склады материального учета. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Обрати внимание. Всего один обработчик исключительной ситуации. Никаких транзакций с клиента. А в процедуре на самом деле куча данных перемалывается. 2 tygra на счет книги Слушай, пора писать. Я уже и название придумал. :-) Delphi & MS SQL Server. Профессиональная разработка приложений в архитектуре клиент/сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 19:19 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Tygra И начнешь ты ее (книгу), как всегда. "Ну сколько раз вам можно объяснять..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 21:12 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
ну это еще не все .... а когда куча хранимых процедур, то тогда и еще писать одну с общей транзакцией ?? не уж спасибо лучше я их вызову из клиента в одной транзакции ... но это все не по существу вопроса .... try в любом случае не работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 09:45 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
2 bigman ну это еще не все .... а когда куча хранимых процедур, то тогда и еще писать одну с общей транзакцией ?? А ты как думал. Данные то у тебя на сервере, там с ними и надо работать. не уж спасибо лучше я их вызову из клиента в одной транзакции ... Никогда так не делай. Послушайся совета. Геморой в этом случаи обеспечен. но это все не по существу вопроса .... try в любом случае не работает :) Да все работает. Обработчик то написал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 09:50 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
а то не обработчик типа ... try Application.ProcessMessages; Open; If Fields[0].AsInteger <> 0 then begin StopWait; Raise Exception.Create(' Ошибка передачи !!! Код ошибки: '+Fields[0].AsString); end; except on E: Exception do begin StopWait; Raise Exception.Create('ОШИБКА ВЫПОЛНЕНИЯ '+E.Message); end; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 09:52 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
и еще по поводу трназакций .... во первых все данные обрабатываются на сервере а главная транзакция клиента решает применить все или нет ... очень удобно во вторых когда куча разношерстных процедур то надо 50 параметров передавть туда с клинета в третьих когда налету добавляются процедуры (в лучшем случае) кто что скажет против ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 09:57 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
я сначала тоже передавал параметры по "науке" через pararms но как показала практика очень часто выскакивали совершенно бредовые сообщения по поводу этих самих же параметров, особенно выходных ... и тогда я плюнул на все эти параметры ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 10:01 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
Я тебе уже писал, какой обработчик и куда надо добавить, чтоб эксэпшен вылетал. Положи на главную форму компонент TApplicationEvents и в обработчике события OnException напиши: Код: plaintext 1. 2. 3. во первых все данные обрабатываются на сервере а главная транзакция клиента решает применить все или нет ... очень удобно во вторых когда куча разношерстных процедур то надо 50 параметров передавть туда с клинета в третьих когда налету добавляются процедуры (в лучшем случае) кто что скажет против ? Я скажу ПРОТИВ . Я уже замучился учить тебя, как надо делать, а как не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 10:03 |
|
||
|
Вложенный try
|
|||
|---|---|---|---|
|
#18+
а я уже писал, что ЭТО ТОЖЕ НЕ РАБОТАЕТ !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32133310&tid=2118650]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 406ms |

| 0 / 0 |
