Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Сохранить значение объекта err |
Автор: BlackSun 01.03.18, 14:09 |
Перед вызовом процедуры Public Proc1 объект err заполнен некими значениями. В самой Proc1 стоит On Error Resume Next, после выхода из Proc1 имеем чистый err или с данными ошибки от Proc1. Как сохранить данные err, которые было до вызова Proc1? |
Автор: Akina 01.03.18, 16:05 |
Нафига? |
Автор: BlackSun 01.03.18, 17:08 |
Чтобы в конце основной процы Proc0 обработать ошибку! Просто интересно, как сохранить объект целиком, а не 2 свойства. |
Автор: Akina 01.03.18, 17:39 |
Сохрани все свойства - чего там их у Err-то... ну или попробуй выпендриться типа <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> вдруг да проскочит... Dim arrerr() As Err |
Автор: leo 02.03.18, 06:32 |
Цитата BlackSun @ Как сохранить данные err, которые было до вызова Proc1? ... Чтобы в конце основной процы Proc0 обработать ошибку! Какой-то странный подход. Ошибку нужно обрабатывать сразу при ее возникновении, а не откладывать на потом. А если в рез-те этой ошибки и Proc1 отработает неправильно?! |
Автор: Akina 02.03.18, 08:33 |
BlackSun На, развлекайся... <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Type ErrorObject Description As String HelpContext As Long HelpFile As String LastDllError As Long Number As Long Source As String End Type Sub testErrorObject() Dim store(1 To 2) As ErrorObject Dim i As Integer On Error GoTo ErrorHandler Debug.Print 1 / 0 Debug.Print 1024 * 1024 Stop Exit Sub ErrorHandler: i = i + 1 store(i).Description = Err.Description store(i).HelpContext = Err.HelpContext store(i).HelpFile = Err.HelpFile store(i).LastDllError = Err.LastDllError store(i).Number = Err.Number store(i).Source = Err.Source Resume Next End Sub |
Автор: MIF 02.03.18, 11:04 |
Akina,ты в блокноте код писал? |
Автор: Akina 02.03.18, 11:43 |
MIF Не, в чём-то... кажется, в экселе, но уже не помню... и даже запустил и по Stop посмотрел Locals. |
Автор: BlackSun 05.03.18, 16:45 |
т.е. сохранить сам объект никак? а то я пробовал сделать: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> но получил далее просто дубликат err, а не самостоятельный объект. Dim tmpErr As ErrObject Set tmpErr = err |
Автор: Akina 05.03.18, 16:54 |
Сохранить - никак. Ибо похоже, что Err - не объект, а интерфейс некоего объекта... |
Автор: VisualProg 06.03.18, 07:16 |
Интересно, а при передаче по ByVal, как оно себя должно в VB повести? |
Автор: Akina 06.03.18, 09:55 |
VisualProg Так попробуй, зачем спрашивать-то? Хотя вполне можно предсказать, что получится - то же, что и в сообщении #9. Да и в случае ByRef получится то же самое... |
Автор: VisualProg 06.03.18, 11:00 |
Кончился у меня басик, дома поднимать времени нету, а на работе только VBA в каком нибудь офисе остался. Так что я с VB совсем завязал, только относительно недавно начал понимать - что же на самом деле у меня было, и какой же я дурак, раз это всё не использовал и не знал |