第五十七条:只针对异常的情况才使用异常
应该都有这个意识吧,就像什么抓索引越界什么的,没有必要。

第五十八条:对可恢复情况使用受检查异常,对编程错误使用运行时异常
三种可抛的异常:受检的异常(checked exception)、运行时异常(run-time exception)、错误(error)

第五十九条:避免不必要地使用受检的异常

第六十条:优先使用标准的异常
IllegalArgumentException      非null的参数值不正确
IllegalStateException        对于方法调用而言,对象状态不合适
NullPointerException        空指针
IndexOutOfBoundsException     索引越界
ConcurrentModificationExcetion   在禁止并发的修改的情况下,检测到对象的并发修改
UnsupportedOperationException    对象不支持用户请求的方法
这个要说的就是记住一些常用的异常的用法,有必要子类化的时候可以子类化。

第六十一条:抛出与抽象相对应的异常
高层级的实现应该捕获第层的异常,同时抛出可以按照高层抽象进行解释的异常。
说的有点难懂,看个例子就懂了

    ListIterator<E> iterator = listIterator(index);
try {
iterator.next();
} catch (NoSuchElementException e) {
throw new IndexOutOfBoundsException();
}

就是在低层抛出的NoSuchElementException对于next()方法根本不知道为什么会给返回一个这个东西,似乎和代码没什么关系,因此转换成IndexOutOfBoundsException告诉外层是因为索引月结才不能获取到next()。一般也要把原因传递给下一个异常。有个initCause()方法可以将抓到的异常设置在要抛出的异常上。但是不要乱用,能不用就不用,

第六十二条:每个方法抛出的异常都要有文档

第六十三条:在细节消息中包含能捕获失败的消息

第六十四条:努力使失败保持原子性
尽量使异常发生后,能让所有对象保持在未发生异常之前的状态。比如想获取下一个元素,需要让index加1,在取内容,但是取内容的时候索引越界了这时的index是加1之后的,作者的意思是应该让这个index在跳出异常之后使index恢复最开始的状态。不知道,不评价。

第六十五条:不要忽略异常
catch到异常后不要什么也不做。

Effective java -- 8 异常的更多相关文章

  1. Java异常(二) 《Effective Java》中关于异常处理的几条建议

    概要 本章是从<Effective Java>摘录整理出来的关于异常处理的几条建议.内容包括:第1条: 只针对不正常的情况才使用异常第2条: 对于可恢复的条件使用被检查的异常,对于程序错误 ...

  2. [Effective Java]第九章 异常

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. 《Effective Java》第9章 异常

    第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 Java程序设计语言提供了三种可抛出结构(throwable) ;受检的异常(checked exception)运行时异常(run-t ...

  4. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  5. 《Effective java》-----读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  6. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  7. effective java 读后感

    think in java  , effective java  这两本书一直都在java的生态圈中经久不衰.本来想着先翻过 think in java 这本大山,但是读到一半就放弃了.过长的篇幅,让 ...

  8. Effective java读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...

  9. Effective Java之最佳建议

    #Effective Java之最佳建议 此书中,目前给我帮助最大的两条建议是: - 检查参数的有效性 - 不要忽略异常 ###检查参数的有效性 对于这一条,使我感同身受的原因是:在Web项目中,前期 ...

随机推荐

  1. [Hibernate开发之路](2)Hibernate问题

    (1)数据库驱动问题 log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j: ...

  2. 如何手动编译运行带包 java 程序

    带包的java程序比普通java程序的编译稍微复杂一些.例如下面的例子: package cn.guopeng; import java.util.*; public class hello { pu ...

  3. Android中常用布局单位

    Android在UI布局时经常用到一些单位,对单位混用直接会影响UI的显示,要想正确的在布局中使用每种单位就必须先真正的熟悉它. UI显示效果的影响因素:屏幕尺寸.屏幕密度.分辨率:而android手 ...

  4. 解决Linux上解压jdk报错gzip: stdin: not in gzip format

    最近在阿里上买了个服务器玩,需要安装jdk,在解压过程中遇到了一些问题,又是一番Google度娘,终于解决了.问题原因让我有点无奈…… 输入 #tar -xvf jdk-8u131-linux-x64 ...

  5. Linux系统字符集乱码问题

    假设你在安装Linux的过程中就选择了中文.可能能够省去步骤1.2.反之.假设你先安装了英文环境,而后希望它支持中文,则能够1.2步 1.首先在linux中安装中文包安装中文简体包rpm -ivh k ...

  6. AI关注的网址

    中科院计算技术研究所博士招生:http://admission.ucas.ac.cn/info/ZhaoshengDanweiDetail/9adf9e50-424b-44c8-b2dc-900ef9 ...

  7. rsync客户端命令使用简介

    rsync是linux下很流行的增量备份工具,也支持本地文件(夹)复制至远程,而且支持只传输增量部分,也是一个代码(程序)发布的好工具. 基本用法如下: rsync [一堆选项] 源文件(夹) 目标文 ...

  8. java栈的最大深度?

    1. 概述 某公司面试,总监大叔过来,问了图论及栈的最大深度,然后^_^ 一直记着,今天搞一下 2. 代码 package com.goodfan.test; public class JavaSta ...

  9. Shell Error: -bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory (转)

    错误原因可能有以下几种: 1.在WIN底下用文本编辑工具修改过参数变量,在保存的时候没注意编码格式造成的, 2.也有可能是在VIM里修改,第一行末尾按到ctrl_v 查看文件是DOS格式.UNIX格式 ...

  10. CLR内存回收机制

    代龄机制. 通过递归构建可达对象图,不可达的对象会被回收,然后CLR会矫正对象指针. 对于终止化/Finalize对象, 一开始时这些对象指针/根/引用会被放到终止化链表中,当CLR垃圾收集开始时,那 ...