前天面试,面试官问了一个问题, 一个Java方法可以选择抛出异常,也可以选择返回一个错误值(如null, false等),那这两种处理方式有何不同?
当时没有答出来,查了下API文档总结如下:
例如, Queue 接口定义了两组方法,一组方法抛出异常,一组方法返回 false或null 值,
抛出异常组:
add( )
remove( )
element( )
返回false或null值的组:
offer()
poll()
peek()
理论情况下向Queue插入一个元素是不应该失败的,所以如果失败了,就应该抛出异常;
但对于一些特殊的Queue子类,如 fixed-capacity 的队列,当元素已经满时,就不能再插入了,而这种情况不属于异常,属于正常情况,故返回一个 false 表示插入失败.