You must exit an error handler with the RESUME LABEL statement. Execution branches immediately to the specified local label, and the original error trap operation is restored ready to catch the next run-time error.
In the sample program, you want to use RESUME to a specific line. Put the line label before the line that requests user input to give the user another chance to enter a correct path.
Here is the sample program, complete with Error Trapping:
SUB GetFileNames(File() AS STRING)
DIM CurrentDir AS STRING
DIM fName AS STRING, Mask AS STRING
DIM X AS INTEGER
ON ERROR GOTO ErrorTrap
Mask = "*.*"
CurrentDir = CURDIR$
GetPath:
Path = AskUserForPath$()
fName = DIR$(RTRIM$(Path) + Mask)
IF LEN(fName) = 0 THEN EXIT SUB
X = 1
WHILE LEN(fName)
Files(X) = fName
fName = DIR$
INCR X
WEND
EXIT SUB
ErrorTrap:
SELECT CASE ERRCLEAR
CASE 53 : ErrorMsg "No files in this directory."
CASE 71 : ErrorMsg "Drive not ready."
CASE 76 : ErrorMsg "That path doesn't exist."
CASE ELSE : ErrorMsg "Unknown error!"
END SELECT
RESUME GetPath
END SUB
See Also