Currently there are no custom exceptions in Ethereum Virtual Machine code. All failure conditions are "out of gas" as exception is modelled as consuming all the remaining gas.
eth.debug.traceTransaction API may give you some insighteth.debug.traceTransaction API may give you some insight, but it doesn't implement human readable error mechanisms at the moment as far as I know.