This has been puzzling me for very long time and no where has
talked about the scope of a 'On Error Resume Next' statement.

When we program ASP(.NET) pages then we usually like to let
ASP(.NET) stop at errors and report back to us. However there
are parts of our scripts that we know an error will be thrown
and we encapsulate that area inbetween:

On Error Resume Next
Err.Clear
'Try block
If Err.Number Then
'Catch block
End If
On Error GoTo 0

This is similar to the infamous try {} catch(e) {} blocks in
Java/C++, etc.

If we forget the last line 'On Error GoTo 0' then our ASP(.NET)
scripts runs over all errors thrown and we find it hard to
find bugs. So the big question is, does 'On Error Resume Next'
go out of scope when it's written inside a block
(eg. Function)?

Function Function1()
On Error Resume Next
'Our code
End Function

When the Function1 call returns, does the outside calling scope
automatically stays as it was (On Error GoTo 0)?