ex.hlp (Topic list)
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