我看开源中国的很多源码,比如负责从网络解析数据,从数据库的操作都抛异常。这么做的原因是什么。是不是通常情况下,返回值是void的方法一般都抛出异常(如果有的话),有返回值的就在内部try,catch,然后通过返回值标识这个方法是不是执行成功。比如返回值是String时,就约定返回""就是发生了异常,A方法调用了B方法,B方法内部可能会产生IOException,B方法是带有返回值的,A方法的内部也会有其他的操作产生IOException,这时候,让B方法抛出一个IOException,是不是便于在A方法中的catch中集中处理,什么样的情况适合自定义异常?
返回值一般代表正常的业务逻辑,说明系统没有遇到问题,一般不用来表达系统中的错误。而异常一般是系统出现问题,需要上层处理才会抛出。处理异常的代码不应该和主业务逻辑混合,异常层层上抛本身也是方便代码结构处理,不用一层一层的把错误结果向上传递
返回值的坏处是可以不去处理,而Exception的好处是,除了RuntimeException外,不处理通不过编译。
这样可以强制程序员去思考错误处理逻辑。
不建议直接try catch像Exception这样的基类。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。