_=_Контролирование ошибок_=_

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Smith68
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 92
Зарегистрирован: 02.09.2005 (Пт) 19:08
Откуда: Тамбов, Моршанск

_=_Контролирование ошибок_=_

Сообщение Smith68 » 28.05.2006 (Вс) 20:16

Вобщем нада шоб при возникновенни какой-либо ошибки выполнялось оперделенное действие.

Ну например: если ошибка имеет код "400006" то выскакивает какое-нибудь сообщени, а если Run-time error с номером "20008" то конец программы.

Короче полный контроль над ошибками.

Реально ли это?

З.Ы.
Код: Выделить всё
On Error Resume Next
не предлагать.
Вчера на работе получил производственную травму: ударил палец о палец.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.05.2006 (Вс) 20:21

Оцени класс ErrObject.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Smith68
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 92
Зарегистрирован: 02.09.2005 (Пт) 19:08
Откуда: Тамбов, Моршанск

Сообщение Smith68 » 28.05.2006 (Вс) 20:43

Извините, но не в службу, а в дружбу: маленький примерчик или подсказку...
Вчера на работе получил производственную травму: ударил палец о палец.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.05.2006 (Вс) 20:47

Код: Выделить всё
Private Sub Form_Load()
    On Error GoTo hError:

    Me.Left = "text"
   
hError:
    Debug.Print Err.Number; Err.Description
End Sub
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.05.2006 (Вс) 20:48

On Error Statement Example

This example first uses the On Error GoTo statement to specify the location of an error-handling routine within a procedure. In the example, an attempt to delete an open file generates error number 55. The error is handled in the error-handling routine, and control is then returned to the statement that caused the error. The On Error GoTo 0 statement turns off error trapping. Then the On Error Resume Next statement is used to defer error trapping so that the context for the error generated by the next statement can be known for certain. Note that Err.Clear is used to clear the Err object's properties after the error is handled.

Код: Выделить всё
Sub OnErrorStatementDemo()
   On Error GoTo ErrorHandler   ' Enable error-handling routine.
   Open "TESTFILE" For Output As #1   ' Open file for output.
   Kill "TESTFILE"   ' Attempt to delete open
            ' file.
   On Error Goto 0   ' Turn off error trapping.
   On Error Resume Next   ' Defer error trapping.
   ObjectRef = GetObject("MyWord.Basic")   ' Try to start nonexistent
            ' object, then test for
'Check for likely Automation errors.
   If Err.Number = 440 Or Err.Number = 432 Then
      ' Tell user what happened. Then clear the Err object.
      Msg = "There was an error attempting to open the Automation object!"
      MsgBox Msg, , "Deferred Error Test"
      Err.Clear   ' Clear Err object fields
   End If   
Exit Sub      ' Exit to avoid handler.
ErrorHandler:   ' Error-handling routine.
   Select Case Err.Number   ' Evaluate error number.
      Case 55   ' "File already open" error.
         Close #1   ' Close open file.
      Case Else
         ' Handle other situations here...
   End Select
   Resume   ' Resume execution at same line
            ' that caused the error.
End Sub
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.05.2006 (Вс) 20:50

Код: Выделить всё

Sub SomeSubWithError()
On Error Goto ErrorHandler

Open "Z:\XXX\YYY\ZZZ.007" For Input as #1
Close #1

Dim E As Integer
E = 32769

Exit Sub
ErrorHandler:
If Error.Number= 53 Then
MsgBox "Кто-то что-то открыл, чего на самом деле нет!"

End If

If Error.Number = 6 Then
msgbox "Кто-то присвоил Integer переменной значение больше 32767"
End If

End Sub

______________________
Добавлено: Вот так... пока писал уже помогли... :cry:
Последний раз редактировалось Хакер 28.05.2006 (Вс) 20:51, всего редактировалось 1 раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Smith68
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 92
Зарегистрирован: 02.09.2005 (Пт) 19:08
Откуда: Тамбов, Моршанск

Сообщение Smith68 » 28.05.2006 (Вс) 20:50

хе-хе %)
Вчера на работе получил производственную травму: ударил палец о палец.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 28.05.2006 (Вс) 20:58

Ничего смешного нет.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 31

    TopList