Давеча тут был тред с царём, о монадах, эксепшенах и всё таком прочем.
Так вот, возвращаясь к теме, эксепшены, сами по себе, не являются чем-то особенным, это лишь частный случай продолжений, которые, в свою очередь, являются частным случаем монады.
Вот код в качестве примера:
import Control.Monad (when)
import Control.Monad.Cont
divide