On Error 명령문

d

오류 처리를 사용 또는 사용 안함으로 설정합니다.

구문

On Error Resume Next

On Error GoTo 0

주석

코드의 어느 곳에서든 On Error Resume Next 명령문을 사용하지 않으면 런타임 오류가 발생하는 경우 오류 메시지가 표시되고 코드 실행이 중지될 수 있습니다. 그러나 코드를 실행하는 호스트는 정확한 동작을 결정합니다. 호스트는 일부 경우 이러한 오류를 다르게 처리하도록 선택할 수 있습니다. 경우에 따라 오류 시 스크립트 디버거가 호출될 수 있습니다. 또 다른 경우에는 호스트가 사용자에게 알리지 않으려 하기 때문에 오류가 발생했다는 명백한 표시가 없을 수도 있습니다. 다시 말하지만, 이는 순전히 호스트가 발생하는 오류를 처리하는 방식에 따라 달라집니다.

호출 스택 어딘가에 오류 처리가 사용으로 설정되어 있는 경우에는 프로시저 내에서 오류가 반드시 치명적일 필요는 없습니다. 프로시저에서 로컬 오류 처리가 사용으로 설정되지 않은 상태에서 오류가 발생하면 오류 처리가 사용으로 설정된 프로시저를 찾을 때까지 호출 스택을 통해 제어가 다시 전달되고 그 지점에서 오류가 처리됩니다. 호출 스택에 오류 처리가 사용으로 설정된 프로시저가 없으면 해당 시점에 오류 메시지가 표시되고 실행이 정지되거나 호스트가 오류를 적절하게 처리합니다.

On Error Resume Next를 사용하면 런타임 오류를 발생시킨 명령문 바로 다음에 나오는 명령문이나 On Error Resume Next 명령문이 포함된 가장 최근 프로시저 호출 바로 다음에 나오는 명령문으로 실행을 진행합니다. 이렇게 하면 런타임 오류가 발생해도 계속 실행될 수 있습니다. 그런 다음 프로시저 내에서 오류 처리 루틴을 인라인으로 빌드할 수 있습니다.

On Error Resume Next 명령문은 다른 프로시저가 호출될 때 비활성화되므로 해당 루틴 내에서 인라인 오류 처리를 수행하려면 호출되는 각 루틴에서 On Error Resume Next 문을 실행해야 합니다. 프로시저가 종료되면 오류 처리 기능은 종료된 프로시저를 입력하기 전에 발생한 오류 처리로 되돌아갑니다.

이전에 On Error Resume Next를 사용하여 오류 처리를 사용으로 설정한 경우 On Error GoTo 0을 사용하여 오류 처리를 사용 안함으로 설정합니다.

다음 예에서는 On Error Resume Next 명령문의 사용을 보여 줍니다.

On Error Resume Next  ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If  err1 <> 0 Then
    Err.Clear  ' Clear the error
End If
' Script continues after error handling.

설명:

  • 라인 결과 = 10 / 0으로 인해 0으로 나누는 오류가 발생합니다.

  • On Error Resume Next가 활성 상태이므로 스크립트가 중지되지 않고 Err.Number를 사용하여 오류를 확인합니다.

  • 그런 다음 처리 후 Err.Clear를 사용하여 오류를 지웁니다.

기억할 사항:

  • Err.Number: 이 등록정보는 오류가 발생할 경우 오류 코드를 저장합니다. 오류가 발생하지 않으면 0입니다.

  • Err.Description: 마지막으로 발생한 오류에 대한 설명을 제공합니다.

  • Err.Clear: 오류 정보를 처리한 후 지우므로 이후 오류는 스크립트에 영향을 주지 않습니다.

예 1:

On Error Resume Next  ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number

On Error GoTo 0  ' Default error handling is restored
' Now, any error that occurs will stop the script

result = 10 / 0 'Error will be thrown