powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MsgBox и Err.number, Err.Description
9 сообщений из 9, страница 1 из 1
MsgBox и Err.number, Err.Description
    #36726589
Vladm222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не могу понять что может вызывать сброс Err.number в 0 и Err.Description в ""?
очень похоже на то что это происходит после MsgBox
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Error_Handler:
    WriteToLog " "
    WriteToLog "----GridEX_ColButtonClick Error_Handler---"
    
    Dim ErrNumber As Long, ErrDescription As String
    ErrNumber = Err.Number: ErrDescription = Err.Description
    
    WriteToLog "Err.Number = " & CStr(Err.Number)
    WriteToLog "Err.Description = " & Err.Description
    
    Screen.MousePointer = vbDefault
    MsgBox "Error in GridEX_ColButtonClick: " & ErrNumber & " " + ErrDescription, vbCritical + vbOKOnly, strTitle
    
    WriteToLog "after MsgBox "
    WriteToLog "Err.Number = " & CStr(Err.Number)
    WriteToLog "Err.Description = " & Err.Description

лог файл:

> ----GridEX_ColButtonClick Error_Handler---
> Err.Number = -2147467259
> Err.Description = ERROR: duplicate key value violates unique constraint "finance_ordered_service_ordered_ser_from_ordered_service_id_key";
Error while executing the query
> after MsgBox
> Err.Number = 0
> Err.Description =


зы я в тупике ...
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36726601
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladm222не могу понять что может вызывать сброс Err.number в 0 и Err.Description в ""?
Сам MsgBox и является.
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36726607
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, не прав я:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub Command1_Click()

Dim i As Integer
On Error Resume Next
i =  5  /  0 

    Debug.Print " "
    Debug.Print "----GridEX_ColButtonClick Error_Handler---"
    
    Dim ErrNumber As Long, ErrDescription As String
    ErrNumber = Err.Number: ErrDescription = Err.Description
    
    Debug.Print "Err.Number = " & CStr(Err.Number)
    Debug.Print "Err.Description = " & Err.Description
    
    Screen.MousePointer = vbDefault
    MsgBox "Error in GridEX_ColButtonClick: " & ErrNumber & " " + ErrDescription, vbCritical + vbOKOnly, "ttt"
    
    Debug.Print "after MsgBox "
    Debug.Print "Err.Number = " & CStr(Err.Number)
    Debug.Print "Err.Description = " & Err.Description

End Sub
Видимо, разгадку надо искать в WriteToLog
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36727235
Vladm222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Видимо, разгадку надо искать в WriteToLog

да ничего там особенного...,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub WriteToLog(TextToWrite As String)
    Dim MyFile
    MyFile = FreeFile
    Open (App.Path & "\log.txt") For Append As #MyFile
    Print #MyFile, Now & " >  " & TextToWrite
    Close #MyFile
End Sub


сорри, забыл еще добавить важный момент: такое поведение проявляется только при запуске ехе, а под IDE все Ok
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36727273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladm222,

Ситуация не воспроизводится.
В том числе из exe
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Option Explicit

Private Sub Command1_Click()

Dim i As Integer
On Error GoTo Error_Handler
i =  5  /  0 
i =  5  /  0 
i =  5  /  0 
Exit Sub

Error_Handler:
    WriteToLog " "
    WriteToLog "----GridEX_ColButtonClick Error_Handler---"
    
    Dim ErrNumber As Long, ErrDescription As String
    ErrNumber = Err.Number: ErrDescription = Err.Description
    
    WriteToLog "Err.Number = " & CStr(Err.Number)
    WriteToLog "Err.Description = " & Err.Description
    
    Screen.MousePointer = vbDefault
    MsgBox "Error in GridEX_ColButtonClick: " & ErrNumber & " " + ErrDescription, vbCritical + vbOKOnly, "ddd"
    
    WriteToLog "after MsgBox "
    WriteToLog "Err.Number = " & CStr(Err.Number)
    WriteToLog "Err.Description = " & Err.Description
Resume Next

End Sub
Public Sub WriteToLog(TextToWrite As String)
    Dim MyFile
    MyFile = FreeFile
    Open ("c:\log.txt") For Append As #MyFile
    Print #MyFile, Now & " >  " & TextToWrite
    Close #MyFile
End Sub
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36727566
Vladm222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Ситуация не воспроизводится.
>В том числе из exe

ексепшн происходит при вызове recordset.open (arguments...), БД - PostgreSQL
при банальном делении на ноль(ошибка в VB коде) все работает как нужно.

пробовал:
api getGetLastError возвр 0,
err.LastDllError тоже возвр 0.

дефект пофиксил переносом Err.Number, ErrDescription во временные переменные перед выводом MsgBox, просто стало очень интересно что же происходит на самом деле.
впечатление такое что где то неявно(подозрение на MsgBox) идет Err.Clear
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36727680
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladm222api getGetLastError возвр 0Под вб она всегда возвращает 0, потому что ее вызывает объект Err.
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36728277
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Vladm222
> впечатление такое что где то неявно(подозрение на MsgBox) идет Err.Clear

Есть один товарищь, писатель, программист и просто хороший человек, так вот он написал
книгу , в которой говорит "Верить нельзя никому. Все врут". У
него был случай, когда врала даже GetLastError. Вот. И он говорит, в этой книге, что при ошибке нужно снимать всю
доступную информацию и сохранять её куда-нибудь в заготовленную структуру. Потому что некоторые действия, как-то
обращения к диску, выделения памяти, могут порождать свои ошибки и сбрасывать состояние имеющихся ошибок. И та-же
GetLastError будет возвращать ошибки уже не первоначальные, а следственные, возникшие уже при попытке что-то сделать по
обработке первоначальной ошибки.

Книгу советую прочитать вообще всем.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MsgBox и Err.number, Err.Description
    #36728287
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос
> Книгу советую прочитать вообще всем.

Да! Если нужно, пишите я поищу компакт от неё и могу сбросить примеры. На компакте ещё был SDK, но правда он устарел
даже тогда, когда я покупал книгу :) поэтому заинтересовавшиеся могут качать SDK сразу, не дожидаясь примеров

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MsgBox и Err.number, Err.Description
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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