evalCatchDomViolationExceptions :: String -> t -> Either AERNException t
evalCatchDomViolationExceptions contextDescription a =
    case evalCatchAERNExceptions contextDescription a of
        Left e@(AERNDomViolationException _) -> Left e
        Left e@(AERNMaybeDomViolationException _) -> Left e
        Left e ->
            unsafePerformIO $
            do
            putStrLn $ contextDescription ++ ": rethrowing" 
            throw e
        r -> r
evalCatchDomViolationExceptions :: String -> t -> Either AERNException t
evalCatchDomViolationExceptions contextDescription a =
    case evalCatchAERNExceptions contextDescription a of
        Left e@(AERNDomViolationException _) -> Left e
        Left e@(AERNMaybeDomViolationException _) -> Left e
        Left e ->
            unsafePerformIO $
            do
            putStrLn $ contextDescription ++ ": rethrowing" 
            throw e
        r -> r
evalCatchDomViolationExceptions contextDescription a =
    case evalCatchAERNExceptions contextDescription a of
        Left e@(AERNDomViolationException _) -> Left e
        Left e@(AERNMaybeDomViolationException _) -> Left e
        Left e ->
            unsafePerformIO $
            do
            putStrLn $ contextDescription ++ ": rethrowing" 
            throw e
        r -> r