Java中的异常分为两种类型:checked Exception和unchecked Exception。

Why did the designers decide to force a method to specify all uncaught checked exceptions that can be thrown within its scope? Any Exception that can be thrown by a method is part of the method's public programming interface. Those who call a method must know about the exceptions that a method can throw so that they can decide what to do about them. These exceptions are as much a part of that method's programming interface as its parameters and return value.

一个方法没有返回期望值的原因有两个:一个是contingency(应变),一个是fault(故障)。

一个contingency应该被程序设计者考虑到,并把它作为程序的正常行为之一,它对影到checked exception对于一个方法而言,它应该把contingency的情况大包为checked exception抛出;如果是库类的方法,一定要设计好,因为方法总会有些不太常出现,但是还是会可能的返回情况,这就刚好用checked exception来表达,当应用程序调用该方法的时候,会根据不同的情况对其进行分别处理,从而返回给最终使用者一个正确的值。抛出这种异常,应该完全不影响程序的正常运行

一个fault是设计者认为不会发生的,它对应到unchecked exception。

应变和故障的对比
条件 应变 故障
被认为是 设计的一部分 一个糟糕的意外
预计会发生 经常发生 不会发生
关注方 上游调用 需要修好找个问题的人
价值 另外一种返回方式 程序bug,硬件系统故障,配置错误,丢失的文件,服务器没有运行
与异常匹配 checked unchecked

参考资料:

Effective Java Exceptions

http://java.sun.com/docs/books/tutorial/essential/exceptions/runtime.html

Exceptions In Java相关推荐

  1. 【已解决】Exception in thread “Thread-0“ redis.clients.jedis.exceptions.JedisConnectionException: java.n

    问题: Exception in thread "Thread-0" redis.clients.jedis.exceptions.JedisConnectionException ...

  2. redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refu

            今天在做Redis 测试的时候遇到一个错误,写一篇博客博客记录一下:          错误: redis.clients.jedis.exceptions.JedisConnecti ...

  3. Chained Exceptions in Java

    1. Overview In this article, we'll have a very brief look at what Exception is and go in depth about ...

  4. redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refus

    今天在连接redis时出现了一个奇怪的错误.如下: public class RedisTest {@Testpublic void redisTest(){// 连接RedisJedis jedis ...

  5. com.baomidou.mybatisplus.core.exceptions.MyBatisPlusException: java.net.UnknownHostException

    这个问题,后面跟的是服务器的hostname, name not resolve 是因为无法解析服务器的hostname导致的报错,服务器上vim /etc/hosts增加hostname解析之后,重 ...

  6. java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException

    flink提交任务卡死,cancel job以后,在$FLINK_HOME/log/flink-appleyuchi-client-Desktop.log 发现该报错: java.lang.NoCla ...

  7. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  8. 了解Java中的检查与未检查异常

    约书亚·布洛赫(Joshua Bloch)在< 有效的Java >中说 将检查的异常用于可恢复的条件,将运行时异常用于编程错误(第二版中的项目58) 让我们看看我是否正确理解了这一点. 这 ...

  9. java程序无法连接redis_无法使用jedis连接到redis

    Redis版本:3.2.0 Jedis版本:2.8.1 下面是我连接到redis的java代码: public class TestRedis { public static void main(St ...

最新文章

  1. 「2019中国大数据技术大会」超值学生票来啦!
  2. 测试ESP32S基本模块的功能,并验证是否可以应用在AI智能车竞赛检测激光信号中
  3. Linux-Rsync项目实战(详细) 备份全网服务器数据生产架构方案
  4. 漂亮的花样边框html代码,手把手教你制作精美边框素材HTML代码
  5. Remove Nth Node From End of List
  6. android t类型参数,android – Kotlin属性:“属性的类型参数必须在其接收器类型中使用”...
  7. .NET Core扩展IServiceCollection自动注册服务
  8. docker jdk mysql_docker部署springboot前后端分离项目(jdk+jar包+mysql+redis+nginx)(示例代码)...
  9. 知乎提示浏览器版本过低的完美解决办法
  10. 1KB文件夹快捷方式病毒清除(转)
  11. 单片机C语言关键字之extern
  12. hive  explode(split(split_feild,‘split_char‘)) split_feild为null 整条数据会丢掉
  13. 模仿探探(百合网,珍爱网)卡片左右滑动效果,滑动流畅,卡片view无限重生
  14. 吉林银行2021年上半年经营成果丰硕 支持实体经济能力显著增强
  15. H5图片高度根据宽度自适应
  16. 基于XGBOOST的糖尿病遗传风险预测(1)
  17. MFC——11.GDI 2D编程基础
  18. android:layout_margin真实含义 及 自定义复合控件 layout()执行无效的问题解决
  19. Java main正确形参_Java application 中的主类需包含 main 方法,以下哪项是 main 方法的正确形参?( )...
  20. root后的华为手机,华为手机可以root

热门文章

  1. JAVA核心知识点--HttpClient获取302响应中的Location头信息
  2. 外骨骼机器人(一):Lokomat核心技术简介
  3. Java技术之AQS详解
  4. 网络状态码含义,常用(204,304, 404, 504,502)
  5. 《创业时代》这部剧或许大家都有看过,里面的郭鑫年(黄轩饰),最终创业成功了吗?
  6. 德鲁伊(Druid)后台监控配置详细操作。生产环境定位问题方法
  7. BGA焊点气泡的分布与原因
  8. 小米公司不管老用户的手机了。小米1
  9. INSEC WORLD精彩回顾:一场为中国定制的“黑帽大会”
  10. C/C++ 项目必读:代码格式化和静态分析检查的一站式工作流 Cpp Linter