Announcement

Collapse
No announcement yet.

error handling

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lance Edmonds
    replied
    Great thinking Michael!

    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Michael Mattias
    replied
    Another way is to separately compile the code where you want the error-trapping code by putting it in a PBU file.

    As long as you use ON ERROR or RESUME in the PBU module, the code is generated; if you don't use these verbs, it ain't.

    MCM




    ------------------
    Michael Mattias
    Racine WI USA
    [email protected]

    Leave a comment:


  • Lance Edmonds
    replied
    As I understand it, this is not possible at this time. Sorry!

    You may need to rework your printing and local error handler sub/function more, in order to eliminate the problem.

    For example, by writing the whole print job to a temporary disk file, and then the actual printing code can be handled in a loop that reads from the file and sends it to the printer. This way you may be able to use RESUME <label> instead of a plain RESUME.

    Another idea would be to switch off the global error handler inside that sub/function (ON LOCAL ERROR RESUME NEXT) and query the state of ERR after each critical statement. Then you can "manually" handle errors on a case-by-case basis, possibly with a subroutine inside the sub/function.

    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Pawel Kusmierek
    Guest replied
    Here are the details.

    I use $error all on because the program is really big (so it
    may have many bugs) and it is still being developed.

    I have a global error trapping routine which just displays
    a message, the error number and location and writes some data
    to disk. These data may be used for debugging then.

    I have a sub that sends data either to disk or to printer.
    I want to make this sub safe against printer errors (timeout,
    paper out, etc.). So I wrote a local error handler which
    checks for error number. If the error is not related to
    printer, then control is transferred to the global handler.
    In case of printer error, the user is asked what to do: cancel
    printing or retry (after he or she adds paper, turns the printer
    on, or whatever is needed). The retry is accomplished by RESUME
    statement.

    According to the PowerBasic Refernce Guide, the RESUME adds
    one byte to the EXE file for each statement. This adds as much
    as 10 kB to my program. However, my RESUME is in a local
    handler. Is it possible to force the compiler to add one byte
    per each statement of the sub rather than for each statement
    of the whole program?

    I hope that i was clear enough this time. Sorry for bad English.

    ------------------

    Leave a comment:


  • Lance Edmonds
    replied
    Confirmed: $EVENT does not affect the generation of error trapping code as specified with $ERROR.

    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Lance Edmonds
    replied
    Can you tell us what errors do you actually want to trap in that particular sub/function?

    Note that unless you are already using $ERROR ALL OFF (or are using the default IDE options of OFF), then you already have the additional overhead of error testing code added to your compiled app (see $ERROR in the documentation).

    BTW, I'm not clear that $EVENT OFF affects the generation of error checking code, since error testing and event trapping are separate entities. I'll check with R&D.




    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Pawel Kusmierek
    Guest started a topic error handling

    error handling

    I have to create a local error handling routine with resume.
    Is it possible to have one byte per statement added only in
    the sub that the local handler refers to? I cannot just use
    $event off outside the sub because i need other events to be
    trapped and there is a global error handler (without resume)

    ------------------
Working...
X