On this page:
display-exn
raise-exn
reraise-exn
Version: 4.0.2.5

1 Exception utilities

 (require (planet untyped/unlib/exn))

Utilities for raising, handling and printing exceptions.

(display-exn exn)  void?

  exn : exn?

Prints the message and stack trace of exn to the current output port. Re-provided from "text-ui.ss" in SchemeUnit.

Examples:

  > (with-handlers ([exn? display-exn])

      (error "Oops!"))

  Oops!

  

   === context ===

  /usr/local/plt/collects/scheme/sandbox.ss:469:4: loop

  

  

(raise-exn id message arg ...)

Raises an exception with a default set of continuation marks. id is the identifier of the exception’s structure type transformer binding (e.g. exn or exn:fail). message and args are passed to the exception’s constructor, along with the value of current-continuation-marks.

Examples:

  > (with-handlers ([exn? pretty-print])

      (raise-exn exn:fail "Oops!"))

  #(struct:exn:fail

    "Oops!"

    #<continuation-mark-set>)

  > (with-handlers ([exn? pretty-print])

      (raise-exn exn:fail:syntax "Oops!" (list #'a #'b #'c)))

  #(struct:exn:fail:syntax

    "Oops!"

    #<continuation-mark-set>

    (#<syntax:8:0>

     #<syntax:8:0>

     #<syntax:8:0>))

(reraise-exn old-exn new-exn new-message arg ...)

Raises new-exn with a message of:

  (string-append (exn-message old-exn) ": " new-message)

and the same continuation marks as old-exn. Any additional args are passed to the constructor of new-exn.

Examples:

  > (with-handlers ([exn? pretty-print])

      (with-handlers ([exn? (lambda (e)

                              (reraise-exn e exn:fail

                                "Looks serious"))])

        (raise-exn exn "Oops!")))

  #(struct:exn:fail

    "Looks serious: Oops!"

    #<continuation-mark-set>)