Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
Error Handling Example
◄Example► ◄Contents► ◄Index► ◄Back►
──────────────────────────────────────────────────────────────────────────────
' This example uses the ON ERROR statement to enable error trapping. The
' program attempts to write a large file to the disk. If an error occurs,
' control is passed to a handling routine, and the ERR function is used to
' determine an appropriate message to display. The ERROR, ERR, and RESUME
' statements are used to exit the handling routines, and the END, STOP, and
' SYSTEM statements demonstrate ways to exit a program.
' To try this example:
' 1. Choose New Project from the File menu
' 2. Copy the code example below to the code window
' 3. Press F5 to run the example
DECLARE SUB ErrorMessage (Message$)
DECLARE SUB WriteBigFile (Filenum%)
ON ERROR GOTO ErrHandler
CLS ' Clear the screen
PRINT "This program will attempt to write a large file to a disk drive"
PRINT "you select. The file will be erased when the program ends."
PRINT
DO
INPUT "Which drive"; DR$
DR$ = UCASE$(DR$)
LOOP UNTIL LEN(DR$) >= 1 AND LEN(DR$) <= 2 AND DR$ >= "A" AND DR$ <= "Z"
IF LEN(DR$) > 1 THEN
IF RIGHT$(DR$, 1) <> ":" THEN
DR$ = LEFT$(DR$, 1) + ":"
END IF
ELSE
DR$ = DR$ + ":"
END IF
' Put together a complete file specification.
FileSpec$ = DR$ + "BIGFILE.XXX"
Filenum% = FREEFILE ' Get the next available file number
OPEN FileSpec$ FOR OUTPUT AS Filenum% ' Try to open the file
WriteBigFile Filenum%
CLOSE Filenum%
CLS
PRINT "Everything was OK. No errors occurred."
PRINT "Deleting the file that was created."
KILL FileSpec$
'Same as END, returns to operating system.
SYSTEM
ErrHandler:
SELECT CASE ERR
CASE 52 ' Bad file name or number
END
CASE 53 ' File not found
RESUME NEXT
CASE 57 ' Device I/O error
ErrorMessage "You should probably format the diskette."
END
CASE 64 ' Bad file name
ErrorMessage "The drive name you specified was not correct."
END
CASE 68 ' Device unavailable
ErrorMessage "The drive you named is unavailable."
END
CASE 71 ' Drive not ready
ErrorMessage "The drive was not ready. Check the drive!"
END
CASE ELSE
ErrorMessage "An unexpected FATAL error has occurred."
STOP
END SELECT
SUB ErrorMessage (Message$)
ON LOCAL ERROR GOTO MessageError
CLS
PRINT Message$
PRINT "Cannot continue."
PRINT
PRINT "Press any key to exit."
DO
LOOP WHILE INKEY$ = ""
EXIT SUB
MessageError:
RESUME NEXT
END SUB
SUB WriteBigFile (Filenum%)
ON LOCAL ERROR GOTO LocalHandler
TEXT$ = STRING$(1024, "A")
FOR i% = 1 TO 400
PRINT #Filenum%, TEXT$
NEXT i%
EXIT SUB
LocalHandler:
SELECT CASE ERR
CASE 61 ' Disk full
ErrorMessage ("There is no room remaining on the disk.")
KILL "BIGFILE.XXX"
END
CASE ELSE
ERROR ERR
END SELECT
END SUB