首页 > 代码库 > atitit.架构设计---方法调用结果使用异常还是返回值

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

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 }

 

我要啦免费统计