Обработчик ошибок

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
stalkerzero
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.04.2005 (Сб) 18:34

Обработчик ошибок

Сообщение stalkerzero » 11.04.2006 (Вт) 17:26

У меня возник вопрос, даже не по самому обработчику, а по возможностям его вывода на экран. Например я создал свою форму и там хочу отображать инфу о ошибке, а не через MsgBox. Но это не срабатывает. Как можно такое реализовать?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.04.2006 (Вт) 17:34

А какая разница куда и как вывести текст? Был бы текст, а уж вывести его всяко сможешь... Присвоить, например, свойству Text TextBox'а или Caption для Label. Или на худой конец напечатать на форме методом Print
Весь мир матрица, а мы в нем потоки байтов!

stalkerzero
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.04.2005 (Сб) 18:34

Сообщение stalkerzero » 11.04.2006 (Вт) 17:46

Вот как делал я, но не че не вышло, исправьте если есть ошибка:
Form1 код:
Код: Выделить всё
Private Sub Command1_Click()
Err.Raise 42
End Sub

Private Sub Form_Load()
On Error GoTo Handler
Exit Sub
Handler:
MyError
End Sub

модуль обработчика
Код: Выделить всё

Option Explicit

Function MyError()
frmErrorReport.Caption = frmErrorReport.Caption + " - " + Str(Err.number)
frmErrorReport.lblNameError.Caption = "This error created [ " + Err.Source + " ]"
frmErrorReport.lblErrorDescription.Caption = Err.Description
frmErrorReport.Show
End Function

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 11.04.2006 (Вт) 17:50

On Error GoTo Handler в процедуру нажатия кнопки
Salus populi suprema lex

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.04.2006 (Вт) 17:51

А что делает выше приведенный код вместо задуманного?
Весь мир матрица, а мы в нем потоки байтов!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 11.04.2006 (Вт) 17:54

Дык в его коде обработчик ошибок стоит на процедуре загрузки формы, в которой не происходит никаких ошибок. Ошиб ка то в процедуре нажатия кнопки, а в ней обработчика нет...
Salus populi suprema lex

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.04.2006 (Вт) 17:55

dr.MIG писал(а):On Error GoTo Handler в процедуру нажатия кнопки

вот это верно, похоже была попытка сделать "глобальный" обработчик ошибок

Если уж делать глобальный обработчик, то его надо пихать в Sub Main
Весь мир матрица, а мы в нем потоки байтов!

stalkerzero
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.04.2005 (Сб) 18:34

Сообщение stalkerzero » 11.04.2006 (Вт) 17:56

dr.MIG прав на 100%
действительно в простом созданом проекте при добавлении 'On Error GoTo Handler в процедуру нажатия кнопки' все срабатывает, а в проете другом не хочет, но всеравно спасибо буду искать проблему дальше сам.

stalkerzero
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.04.2005 (Сб) 18:34

Сообщение stalkerzero » 11.04.2006 (Вт) 18:03

Если уж делать глобальный обработчик, то его надо пихать в Sub Main

Попробовал не выходит . Может в sub main ошибка, код такой:
Код: Выделить всё


Option Explicit

Function myError()
frmErrorReport.Caption = frmErrorReport.Caption + " - " + Str(Err.Number)
frmErrorReport.lblNameError.Caption = "Error [ " + Err.Source + " ]"
frmErrorReport.lblErrorDescription.Caption = Err.Description
frmErrorReport.Show
End Function

Sub Main()
On Error GoTo Handler
Exit Sub
Handler:
myError
End Sub


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

Private Sub Command1_Click()
Err.Raise 42

End Sub

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.04.2006 (Вт) 18:08

Дык, если пихать обработчик в Sub Main, то и весь код должен вызываться из нее же, то есть должно быть что-то типа этого%
Код: Выделить всё
Sub Main
On Error GoTo ErrHandler

Dim MainForm As New FMain
MainForm.Show
...

Exit Sub
ErrHandler:
Call Handler()
End Sub
Весь мир матрица, а мы в нем потоки байтов!

stalkerzero
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.04.2005 (Сб) 18:34

Сообщение stalkerzero » 11.04.2006 (Вт) 18:19

Спасибо за помощь буду пробовать


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 189

    TopList