Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MsgBox и Err.number, Err.Description / 9 сообщений из 9, страница 1 из 1
06.07.2010, 20:41
    #36726589
Vladm222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
не могу понять что может вызывать сброс 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
06.07.2010, 20:51
    #36726601
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
Vladm222не могу понять что может вызывать сброс Err.number в 0 и Err.Description в ""?
Сам MsgBox и является.
...
Рейтинг: 0 / 0
06.07.2010, 20:56
    #36726607
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
Хотя нет, не прав я:
Код: 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
07.07.2010, 10:39
    #36727235
Vladm222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
>Видимо, разгадку надо искать в 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
07.07.2010, 10:49
    #36727273
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
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
07.07.2010, 12:14
    #36727566
Vladm222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsgBox и Err.number, Err.Description
>Ситуация не воспроизводится.
>В том числе из exe

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

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

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

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

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

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

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

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


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