2015-04-20 3 views
0

Что произойдет, если ошибка произошла внутри второго. Будет ли он возобновляться дальше?Об ошибке Область VBA

Sub One() 

    On Error Resume Next 
    call Two 

end sub 

Спасибо!

+1

Добавить 'Sub Two(): i = 1/0: End Sub' и посмотреть. –

+4

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что на него можно легко ответить методом проб и ошибок. –

+1

Я не согласен с закрытием вопросов только потому, что ответ может быть найден путем проб и ошибок. Может быть, для студента, написавшего 100 подобных кодов, это правда, но у меня нет времени писать небольшой тестовый код для каждого вопроса, который появляется. Кроме того, комментарий или ответ часто содержат информацию, касающуюся темы, о которой я даже не думал спрашивать (пока). – riderBill

ответ

4

Вы - это близко, чтобы разобраться в этом самостоятельно - отвечая здесь для потомков.

Вставьте этот код в ThisWorkbook (предполагая, что Excel VBA), и вызвать TestResumeNextиз непосредственной панели:

Public Sub TestResumeNext() 
    On Error Resume Next 
    Boom 
    MsgBox "Stack " & Err.Description 
End Sub 

Private Sub Boom() 
    Err.Raise 6 
End Sub 

Вы увидите окно сообщения с "Stack Overflow".

Теперь закомментируйте заявление On Error и повторите это: вы получите ошибку времени выполнения.

+1

Я бы добавил, что это верно, только если 'Sub Boom' не имеет собственного обработчика ошибок. Если у него есть собственный обработчик, он может обрабатываться локально. – RubberDuck

+1

@ RubberDuck правильный. Если обработчик ошибок в «Sub Boom» не вызывает другую ошибку. –

Смежные вопросы