울어라휘파람새야

On error 문 본문

밥줄/ASP

On error 문

꼬꼬리코 2010. 4. 1. 14:31

On Error 문

오류 처리기를 사용할 수 있거나 사용할 수 없게 합니다.

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
Err.Raise 6   ' 오버플로 오류를 일으킵니다.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' 오류를 지웁니다.
 
출처 : MSDN
 
Comments