1 Exception utilities
2 Number utilities
3 String utilities
4 Bytes utilities
5 Symbol utilities
6 List utilities
7 PLT 4x hash utilities
8 PLT 3x hash utilities
9 Contract utilities
10 File and path utilities
11 Parameter utilities
12 Syntax utilities
13 SRFI19 time utilities
14 Generators
15 Generators (short names)
16 Pipelines
17 Write-through cache
18 Yieldable procedures
19 Debugging tools
20 Profiling tools
21 Logging tools
On this page:
display-exn
raise-exn
reraise-exn
Version: 3.99.0.23

 

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:456: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>)