<HTML><BODY>I'm writeing a parser.<br>So I want to see in parser exception what happend and when (not only where).<br><br>(define (parse-item item)<br>   (with-handlers ([exn? (lambda (e) (raise (struct-copy exn e [message (format "At item ~a\n~a" item (exn-message e))])))])<br>         ....))<br><br>But this way I lose all exception types. Is there a way to change exception message, saving its type, except long copy/paste like<br>(with-handlers ([exn:fail:contract:arity? (raise (struct-copy exn:fail:contract:arity ...))]<br>                         [exn:fil:contract? (raise (struct-copy exn:fail:contract ...))]<br>                         ...) <br>   ...)<br><br>?<br><br>-- <br>Roman Klochkov</BODY></HTML>