On Wed, Jul 23, 2014 at 10:10:05PM +0200, Christian Kellermann wrote: > Matt Welland <[email protected]> writes: > > > I'd like to handle the case where http-client gets denied a > > connection. I wrapped the call to with-input-from-request with a > > handle-exceptions but that doesn't catch the error. > > How do you try to catch it? > > The following seems to work for me in csi: > > #;1> (thread-start! > (make-thread > (lambda () > (with-exception-handler (lambda (e) (print e)) > (lambda () > (with-input-from-request > "http://localhost" > #f read-lines)))))) > > #<thread: thread227> > #;2> #<condition: (exn http server-error)> > > The warning is an indication that the exception does not get caught in a > thread handler but the primordeal thread, see also the notes in > http://api.call-cc.org/doc/srfi-18#sec:Notes
It's better to catch specifically the exception for the situation you want to handle, so that unexpected errors won't get caught by accident. Condition-case is your friend in that case: (condition-case (with-input-from-request "http://localhost" #f read-lines) ((exn http client-error) e (print e))) By doing this, any server-side error will get cause an exception to propagate outward, whereas client-side errors (403 permission denied, 404 not found etc) will get caught and printed. >From your output, it seems there's a server-error BTW, so maybe something's going wrong at the other end? Cheers, Peter -- http://www.more-magic.net _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
