Actually, just had a think... Could just throw the exceptions, and use watchdog_exception() in the catch statement?