private/scheme/exn.rkt
#lang scheme

(define-syntax (try stx)
  (syntax-case stx ()
    [(_ e) #'(#%expression e)]
    [(_ e0 e ...)
     (syntax/loc stx
       (with-handlers* ([exn:fail? (lambda (x) (try e ...))])
         (#%expression e0)))]))

(provide try)