Version: 4.2.0.5
9 Exception utilities
|  (require (planet untyped/unlib/exn)) | 
Utilities for raising and handling exceptions.
| (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:3:0>  |       #<syntax:3:0>  |       #<syntax:3: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.
Example:  | 
|   > (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>)  |  
  |