基于spring的web应用,如何处理服务层的错误?

比如我有个下订单的服务,PlaceOrderService,里面有个提交订单的方法,submitOrder()。如果提交订单失败,原因可能有很多,有业务相关的错误,也可能是IOException这种错误,显然,简单的返回 成功/失败 这种布尔型的值到Controller/Action里是不够的,大家是如何处理类似的情况的?
是返回整形或者字符串型的状态码?
还是返回各种自定义异常?
还是有别的更好的办法?

我的经验,如果需求显式要求处理异常,那么就要用方法返回等方式实现,否则隐式用exception,这也分两种,面向操作用户和内部维护者。

[该贴被banq于2012-08-26 05:46修改过]