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 }

7

8 public E remove() {

9 E x = poll();

10 if (x != null)

11 return x;

12 else

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

14 }

转载于:https://www.cnblogs.com/attilax/p/5963910.html

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

  1. 目录:四种Qt程序的架构设计方法

    四种常见的关于Qt程序的架构设计方法: 使用MVC设计模式MVC是Model-View-Controller的缩写,是应用程序开发中常用的设计模式.在Qt中,可以使用QAbstractItemMode ...

  2. vb获得mysql的值,VB.NET调用MySQL存储过程并获得返回值的方法

    本文实例讲述了VB.NET调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体实现方法如下: Dim myConnectionString As String = "Data ...

  3. Java调用MySQL并返回数据_Java调用MySQL存储过程并获得返回值的方法

    本文实例讲述了Java调用MysqL存储过程并获得返回值的方法.分享给大家供大家参考.具体如下: private void empsInDept(Connection myConnect,int de ...

  4. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

  5. C#调用存储过程详解(带返回值、参数输入输出等)

    C#调用存储过程详解(带返回值.参数输入输出等) 这篇文章主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值.参数输入输出等,需要的朋友可以参考下 本文实 ...

  6. java 调用linux 脚本并获取返回值

    大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...

  7. java方法的重载与覆盖的返回值类型

    public class A extends B{//下面的是方法的覆盖(重写overRiding)public void riding(){System.out.println("this ...

  8. C++调用python并获取其返回值

    C++调用python并获取其返回值 先上实例代码: C++代码: //初始化py环境 // Py_Initialize();PyRun_SimpleString("import sys&q ...

  9. 中台之上(十三):探讨支持组装式开发的业务架构设计方法

    "颗粒度"问题 面向服务的设计一直都有一个话题,就是服务的"颗粒度"问题,无论是SOA还是微服务,都很难把握颗粒度.首先,SOA在实际操作中并不是真的关心颗粒度 ...

最新文章

  1. 区块链兼容以太坊智能合约
  2. 985博士分享Pytorch与Tensorflow,哪个更值得你学习?
  3. go 变量大写_28. 一文了解Go语言中编码规范
  4. 【NOIP2002】【Luogu1032】字串变换
  5. 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他。
  6. Linux CentOS 7安装Tomcat7的完整步骤。
  7. 华为服务器 修改为传统模式,电脑设置成服务器模式
  8. android-倒计时工具类
  9. AlteraFPGA使用通用SPIFlash
  10. 读懂职场则规潜 潜伏者的上位秘诀
  11. 怎么把win10右下角的隐藏图标调出来(把倒三角调出来)
  12. SQL Server-------数据库恢复技术
  13. MFC连接sqlite3数据库
  14. D. Colored Rectangles
  15. bim土建免费软件“为什么我选不到图元”6大图元讲解
  16. 单缝斜入射衍射_傅里叶变换解夫琅禾费衍射问题的几个例子_2
  17. linux编译安装icu,Icu+配置使用说明
  18. MacOS Big Sur 11.0 — 苹果操作系统 开发者预览测试版
  19. java.util.Date和java.sql.Date的区别和相互转化
  20. es analyzer分词

热门文章

  1. sqlhelper 下载 使用指南 代码 [收藏]
  2. 江苏地区BA还真是慢得很
  3. 我有一张1996年版一元钱,值多少钱?
  4. 供应链B2B项目一直赚不到钱
  5. 闲 鱼,进阶技巧,如何提高你的曝光量?
  6. 除非万不得已,否则绝不谈判
  7. MySQL 网络延时参数设置建议
  8. 软件就像大教堂:我们建造它们——然后祈祷
  9. LeetCode-删除中间节点
  10. php debug 打印变量_PHP_Debug显示所有变量