码迷,mamicode.com
首页 > 其他好文 > 详细

atitit.架构设计---方法调用结果使用异常还是返回值

时间:2014-07-30 20:46:14      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   使用   os   io   问题   

atitit.架构设计---方法调用结果使用异常还是返回值

 

1. 应该返回BOOL类型还是异常 1

2. 最终会有四种状况,抛出异常、返回特殊值、阻塞、超时 1

3. 异常的优缺点点 1

4. java BlockingQueue的提示 2

5. 方案::两个都使用,一个api返回bool,一个throw 异常... 2

 

 

 

1. 应该返回BOOL类型还是异常

现在我遇到一个问题,我有一个函数,它要实现的功能是启动一个线程,然后让此线程监视一个事件。
但我应该返回BOOL类型还是异常哪?

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

2. 最终会有四种状况,抛出异常、返回特殊值、阻塞、超时

 

 

3. 异常的优缺点点

异常的很大的好处是你可以让异常类带出更多的信息,而且可以设计一个清晰的异常类继承体系。

 

不过,有时候儿韩式bool更 方便...if语句黑头的时候儿...

 

4. java BlockingQueue的提示

5. 方案::两个都使用,一个api返回bool,一个throw 异常...

 

首先,看看BlockingQueue提供的常用方法: 
 

可能报异常

返回布尔值

可能阻塞

设定等待时间

入队

add(e)

offer(e)

put(e)

offer(e, timeout, unit)

出队

remove()

poll()

take()

poll(timeout, unit)

查看

element()

peek()

好,上点源码你就更明白了。以ArrayBlockingQueue类为例: 
对于第一类方法,很明显如果操作不成功就抛异常。而且可以看到其实调用的是第二类的方法,为什么?因为第二类方法返回boolean啊。 Java代码  

1 public boolean add(E e) {

2 if (offer(e)) 

3 return true;

4 else 

5 throw new IllegalStateException("Queue full");//队列已满,抛异常

6 } 

8 public E remove() { 

9 E x = poll(); 

10 if (x != null)

11 return x; 

12 else 

13 throw new NoSuchElementException();//队列为空,抛异常

14 }

 

bubuko.com,布布扣

atitit.架构设计---方法调用结果使用异常还是返回值,布布扣,bubuko.com

atitit.架构设计---方法调用结果使用异常还是返回值

标签:style   blog   http   java   使用   os   io   问题   

原文地址:http://blog.csdn.net/attilax/article/details/38305877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!