[Haskell-beginners] AMQP and nested exception handlers
Alex
alex323 at gmail.com
Tue May 12 02:11:04 UTC 2015
Hi:
I am writing a small application which receives HTTP requests,
translates them to JSON, and queues the requests using RabbitMQ.
I am using exceptions to handle extreme cases, such as when a client's
HTTP request lacks a critical header:
lookupHeader :: RequestHeaders -> HeaderName -> Text
lookupHeader hs h = decodeUtf8 $ fromMaybe notFound
(lookup h hs)
where
notFound = throw $ MissingHeader $ decodeUtf8 $ original h
The problem I am running in to is that the header isn't actually looked
up until I call the AMQP library's publishMsg function. If I purposely
do not supply a critical header, I get the following error printed to
the screen:
ConnectionClosedException "ConnectionClosedException \"UNEXPECTED_FRAME
- expected content header for class 60, got non content header frame
instead\""
If I add the following line just above the publishMsg function (to
force evaluation), my exception handler is called successfully:
print $ encode req
As a result, I suspect that this is due to the fact that the "throw
MissingHeader" is getting captured by the AMQP library. What's the best
way to deal with this situation?
--
Alex
More information about the Beginners
mailing list