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 }

atitit.架构设计---方法调用结果使用异常还是返回值的更多相关文章

  1. atitit.api设计 方法 指南 手册 v2 q929.docx

    atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...

  2. DDD不是架构设计方法

    DDD不是架构设计方法 一文读懂DDD 2019-05-28 19:18 by 春哥大魔王, 413 阅读, 3 评论, 收藏, 编辑 何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,D ...

  3. Atitit.架构设计趋势 设计模式 ---微服务架构  soa

    Atitit.架构设计趋势 设计模式 ---微服务架构  soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...

  4. 微软&中科大提出新型自动神经架构设计方法NAO

    近期,来自微软和中国科学技术大学的刘铁岩等人发表论文,介绍了一种新型自动神经架构设计方法 NAO,该方法由三个部分组成:编码器.预测器和解码器.实验证明,该方法所发现的架构在 CIFAR-10 上的图 ...

  5. 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

    接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...

  6. ASP.NET调用存储过程并接收存储过程返回值

    ASP.NET调用存储过程并接收存储过程返回值 2010-08-02 11:26:17|  分类: C#|字号 订阅       2010年02月27日 星期六 23:52 假设表结构Create T ...

  7. javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量

    定义函数.调用函数.参数.返回值 关键字function定义函数,格式如下: function 函数名(){ 函数体 } 调用函数.参数.返回值的规则和c语言规则类似. <!DOCTYPE ht ...

  8. .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)

    最近在项目中与别的公司对接业务,对方是Java语言,需要调用对方的WebServices,结果常规的添加web引用的方法可以传过去值,但是返回值为null 查了很多资料,没有解决方法 思考应该是.Ne ...

  9. C++ 调用Python文件方法传递字典参数并接收返回值

    首先本地需要安装有Python环境,然后在c++工程中包含Python的头文件,引用Python的lib库. //python 初始化 Py_Initialize(); if (!Py_IsIniti ...

随机推荐

  1. JSP页面数据展示:分组数据展示

    一.描述: 页面上要展示的数据只要写好sql从数据库查出来即可,但是展示有时候不是太好处理.比如工作中遇到的这种情况:有一个问题处理的流程,其中需要选择下一处理人,这些处理人要以部门的形式分组展示,实 ...

  2. java基础之:堆排序

    最近做题目饱受打击,愈发觉得打好基础的重要性,于是乎,决心把基本的排序算法还有数组操作一一实现,目的在于一方面能够得到对JAVA基础的巩固,另一面在实现的过程中发现不足. 今天所实现的堆排序(最大堆) ...

  3. c语言检测文件是否存在int __cdecl access(const char *, int);

    最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者 ...

  4. shell脚本学习--shell中的变量$

    $$ :Shell本身的PID(ProcessID) $! :Shell最后运行的后台Process的PID $? :最后运行的命令的结束代码(返回值) $- :使用Set命令设定的Flag一览 $* ...

  5. LeetCode(四)

    Find Kth Largest Number public class Solution { public int findKthLargest(int[] nums, int k) { retur ...

  6. github的一些指令

  7. javascript学习第二课

    主要内容: 1.不可变的原始值和可变的对象引用 javascript中的原始值(undefined.null.布尔值.数字和字符串)与对象(包括数组和函数)有着根本的区别.原始值是不可更改的;任何方法 ...

  8. ImportError: No module named setuptools 解决方案

    shell中输入: wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz --no-che ...

  9. 20145225 《Java程序设计》第2周学习总结

    20145225<Java程序设计> 第2周学习总结 教材学习内容总结 3.1.1Java的类型 分为基本类型(Primitive type)和类类型(Class type) 基本类型: ...

  10. php 中文正则

    utf8编码中文 preg_match("/^[\x{4e00}-\x{9fa5}]+$/u") 而不是 "/^[\x4e00-\x9fa5]+$/u"