第五十八条:对可恢复的情况使用受检异常,对编程错误使用运行时异常

Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception),运行时异常(run-time exception)和错误(error)。

关于什么时候适合使用哪种可抛出结构,程序员中存在一些困惑。虽然这项决定并不总是那么清晰,但是还是有一般性的原则提出了强有力的指导。

在决定使用受检的异常或者未受检的异常时,主要的原则是:如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。通过抛出受检的

异常,强迫调用者在一个catch子句中处理该异常,或者将它传播出去。因此,在方法中声明要抛出的每个受检异常,都是对API用户的一种潜在指示:

与异常相关联的条件是调用这个方法的一种可能结果。

有两种未受检的可抛出结构:运行时异常和错误。在行为上两者是等同的:它们都是不需要也不应该被捕获的可抛出结构。如果程序抛出未受检的异常或者

错误,往往就属于不可恢复的情形,继续执行下去有害无益。程序抛出运行时异常或者错误,将会导致当前的线程停止,并出现适当的错误消息。

错误往往被JVM保留用于表示资源不足,约束失败,或者其他使程序无法继续执行的条件。由于这已经是个几乎被普遍接受的惯例,因此最好不要再实现

任何新的Error子类。因此,你所实现的未受检的抛出结构都应该是RuntimeException的子类。

时间: 2024-10-01 07:17:02

第五十八条:对可恢复的情况使用受检异常,对编程错误使用运行时异常的相关文章

二十八条社会潜规则

今天登录简书逛了一会,无意中看到一篇有意思的文章,感觉有点道理,于是顺便摘抄了下来,与大家共勉. 二十八条社会潜规则:先学会不生气,再学会气死人 1.能在一定位置上的人,一定有他的过人之处,不管你多么讨厌他. 2.要想屏蔽某些人的朋友圈,最好把他同事微信分到一个组里,要屏蔽一起都屏蔽了. 3.不要总在旁人面前提你的朋友多牛逼,你要懂得,别人的成就与你无关. 4.朋友同事之间,帮忙是情分,不帮忙是本分,不要把别人对你的好,当作理所当然. 5.和同事拼单买东西叫外卖,一定把支付明细的截图发给每个人,

一起talk C栗子吧(第一百五十八回:C语言实例--基于AF_INET域的流套接字通信)

各位看官们,大家好,上一回中咱们说的是基于AF_UNIX域的数据报套接字通信的例子,这一回咱们说的例子是:基于AF_INET域的流套接字通信 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中一起制作了我们的第二道佳肴是:基于AF_UNIX域的数据报套接字通信.今天,我将和大家一起制作第三道佳肴:基于AF_INET域的流套接字通信. 制作第三道佳肴的菜谱:流套接字过程. 制作第三道佳肴的食材:流套接字的接口,套接字属性,套接字地址信息. 看官们,以上的内容,我们在前面章

Android笔记(五十八)Android总结:四大组件——Activity篇

什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentView()方法来载入布局文件.并且通过用户对布局文件中的组件所发出的事件来做出相应的反映. Activity的四种状态 1)激活状态,此时activity运行在屏幕前台 2)暂停状态,此时activity失去焦点,但是用户仍然可以看到(例如这个activity上遮盖了一个透明的或者非全屏的activ

Android实战简易教程-第五十八枪(AlarmManager类用法研究小实例)

一.概念及相关方法 android中实现定时任务一般有两种实现方式,一种是使用Java API中提供的Timer类,一种是使用android的Alarm机制.Timer机制有个短板就是不太适用于那些需要长期在后台运行的任务,我们都知道为了让电池更加耐用,会在长时间不操作手机的情况下,CPU进入休眠状态,这是可能导致Timer中的定时任务无法正确运行.所以我们重点来研究一下Alarm机制. AlarmManager,顾名思义,就是"提醒",是Android中常用的一种系统级别的提示服务,

第一百五十八、九天 how can I 坚持

昨天忘写了,也没啥可写的,这两天都闲的蛋疼. 昨天去京东自提柜拿小米手环腕带,还挺难找,好不容易省了5块钱邮费,结果,回来出地铁口,竟然有人声称车钥匙忘带了借五块钱买地铁卡. 没零钱,直接给了五块,哎. 今天,徐斌找到了工作,还好,总算不用一直在家待着了,又要上班. 花千骨大结局,今天看了,感觉里边的对白确实挺揪心的. 白子画,我以神的名义诅咒你,今生今世,永生永世,不老不死,不生不灭. 其他. 没了. 哈哈. 睡觉.

一个屌丝程序猿的人生(五十八)

"林萧,你就擎好吧."这就是徐博上台之前,在林萧耳边所说的悄悄话. 虽然林萧不知道徐博到底要干什么,但林萧知道,徐博恐怕是上台之前,已经看穿了自己心中有些遗憾. 林萧知道,有了徐博这句话,这一次他的项目,恐怕不会默默无闻了. "大家好,我叫徐博.很荣幸能够作为压轴出场,最后一个给大家演示项目." 徐博一上台就语出不凡,成功引起了台下的不满. "得了吧,还压轴.不是所有的最后一个都叫压轴的,知道吗?" "真是不知天高地厚啊."

第五十六条:遵守普遍接受的命名惯例

Java平台建立了一套很好的命名惯例(naming convention),其中有许多命名惯例包含在<The  Java  Language Specification>中. 不严格的讲,这些命名惯例分为两大类:字面的和语法的. 字面的命名惯例比较少,但也涉及包,类,方法,域和类型变量. 包的名称应该是层次状的,用"."分割每个部分.任何将在你的组织之外使用的包,其名称都应该以你的组织的Internet域名开头,并且将 顶级域名放在前面,例如com.sun ,gov.nsa

JAVA学习第五十八- GUI

GUI Graghical User Interface(图形用户接口) java为GUI提供的对象都存在java.awt和java.swing包中 Java的GUI做的的确干不过C++等,不打算浪费过多的时间在这上面 一个简单的窗体演示 public static void main(String[] args){ Frame f = new Frame("新窗体"); f.setLocation(400, 200);//设置窗体的位置 f.setSize(500, 400);//设

第五十八课、自定义模型类(上)------------------狄泰软件学院

 一.自定义模型类 1.QStandardItemModel是一个通用的模型类 (1).能够以任意的方式组织数据(线程.非线性) (2).数据组织的基本单位为数据项(QStandardItem) (3).每一个数据项能够存储多个具体数据(附加数据角色) (4).每一个数据项能够对数据状态进行控制(可编辑.可选...) 2.Qt中的通用模型类QStandardItemModel (1).QStandardItemModel继承自抽象的模型类QAbstractItemModel (2).QStand