关于业务方法抛出异常的问题
最近做的一个项目中
看到了一些这样的接口
public RetMsg queryMonthlyList(String mobileno, int theYear, int theMonth, int type) throws BOSSDataPackageException,ExceedMaxBOSSConnectionException, BranchNotFoundException,IOException, ListNotFoundException ;
抛出的异常其中一部分是自定义的异常.如果实现类或者实现类的子类需要向上抛出其他异常的话就没法处理了 只能用try了.为什么不直接这样写?
public RetMsg queryMonthlyList(String mobileno, int theYear, int theMonth, int type) throws Exception
方法中抛出子异常的话 也一样可以捕捉到
朋友说:
"作为接口层,应该是不需要查看代码就可以调用开发,如果只是抛出Exception,调用接口的开发人员根本不可能知道具体的异常类型是什么。可以看看相关的开源框架或者JDK src。我想应该没有任何一个地方是直接抛出Exception的。"
一开始我觉得好象有些道理..不过琢磨了下,觉得还是欠妥,开源框架和JDK 都是作为一种工具来使用,代码相对来说很稳定,抛出的异常也有针对性,但是一个业务接口的实现很难判断其中会出现的异常,如此将接口抛出异常的类型限定总觉得不合适.
我觉得一些业务接口和工具类的接口应该遵循不同的规则吧?