1. Java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字,try里面放置可能引发异常的代码块,catch后对应异常处理的一个代码块,finally主用于回收在try里打开的物理资源,异常机制保证finall一定会被执行。throws用于方法签名中,声明该方法可能抛出的异常,throw用于抛出一个实际的异常。

    只要执行代码出现了异常,系统就会自动生成一个异常对象,如果没有为这个异常定义cache块,程序就在此退出。

  2. 抛出异常:执行try里代码出现异常,系统自动生成一个异常对象,该对象提交到运行时环境的过程。

  3. 捕获异常:Java运行时环境收到异常后,寻找处理该异常的catch块,找到后交给catch处理的过程。父类异常的cache块应该在子异常后。
  4. Java把所有非正常情况分为两种:异常(Exception)和错误(Error)。他们都继承父类Throwable。

    IndexOutOfBoundsException // 数组越界异常
    NumberFormatException     // 数字格式化转换异常,输入的不是数字字符串
    ArithmeticException       // 算术异常,比如除0异常
    NullPointerException      // 空指针异常,引用变量没有值
    
  5. Java7提供多异常捕捉机制,一个catch可以响应多个异常,多个异常之间用 | 隔开,捕捉多个异常时,异常变量为隐式的final,所以不能重新赋值。
  6. 访问异常信息,访问cache块中异常对象的相关信息,通过访问cache块后异常形参获得。

    getMessage();                    // 返回描述异常的字符串
    printStackTrace();               // 将该异常的跟踪栈信息输出到标准错误输出
    printStackTrace(PrintStream s);  // 将该异常的跟踪栈信息输出到指定输出流
    getStackTrace();                 // 返回该异常的跟踪栈信息
    
  7. 程序在try里打开了一些物理资源,这些物理资源都必须显示回收。finally块用于回收在try里打开的物理资源。
  8. Java的垃圾回收不会回收任何物理资源,只能回收堆内存中对象所占用的内存。
  9. 不管是否try是否引发异常,cache是否被执行,除非在try、catch块中退出虚拟机(return也会执行finally),否则finally总是会被执行。
  10. Java7提供自动关闭资源的try,在try后紧跟一对圆括号,括号里声明、初始化一个或多个资源(这些资源类必须实现AutoCloseable或Closeable接口,必须实现close()方法)。try语句在该语句结束时自动关闭这些资源。
  11. Java的异常分为两大类,Checked和Runtime异常。Checked异常在程序编译时就会发生错误,无法通过编译。
  12. 如果当前方法不知道如何处理方法本身会引发的异常,则使用throws 声明 抛出。让上一级调用者处理。若main方法也无法处理则抛出给JVM虚拟机,虚拟机会打印异常的跟踪栈信息,并终止程序运行。
  13. 方法一旦使用throws抛出,本身就不需要使用try…catch来捕获了。在调用该方法时,要么放在try中捕获,要么放在另一个带throws声明抛出的方法中。

    1. 对于程序中的Checked异常,Java要求必须显式捕获并处理该异常,或者显式声明抛出该异常。
    2. 如果早方法中显示声明抛出Checked异常,将会导致方法签名与异常耦合,如果该方法是重写父类的方法,则该方法抛出的异常还会受到被重写方法抛出的异常限制。
  14. 在程序中自行抛出异常,使用throw。

    throw与throws的比较

    1. throws出现在方法函数头;而throw出现在函数体。
    2. throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
    3. 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
  15. 自定义异常,继承Exception。

public class MyException extends Exception{public MyException(String msg){super(msg);}
}

Java疯狂讲义读书笔记第十章相关推荐

  1. Java编程思想读书笔记——第十章:内部类

    第十章 内部类 将一个类的定义放在另一个类的内部,这就是内部类 内部类和组合是完全不同的概念,内部类了解外部类 10.1 创建内部类 创建就好,好像没啥可说的,直接来上练习: 练习1:(1)编写一个名 ...

  2. 《Java疯狂讲义》第3章(数据类型和运算符):博主李俊德的阅读笔记与知识拓展

    一.问题背景 博主在准备应聘的笔试.面试时,再次采用了多年以来的Java工具书<Java疯狂讲义>,并决定在每章详细复习后都要在博客中写下详细的阅读笔记. 二.阅读笔记与知识拓展--< ...

  3. Java核心技术卷一读书笔记

    文章目录 Java核心技术卷一读书笔记 第一章 Java程序设计概述 1.1 关键特性 第二章 Java程序设计环境 2.1 使用命令行工具 第三章 Java的基本查询设计结构 3.1 数据类型 3. ...

  4. [转载]Java完美经典读书笔记

    java完美经典读书笔记 第一章 概述 第二章 JAVA语言基础 ※关键字: 基本数据类型:  byte  short  int  char long float double boolean 循环控 ...

  5. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  6. 《Head First Java》20201023读书笔记

    P413-P <Head First Java>20201023读书笔记 操作Swing组件 几个常用组件:text field.可滚动的text area.checkbox以及list. ...

  7. 尽信书,不如无书。java的包装类Integer的深入理解及特殊情况(以及java疯狂讲义第5版170页中的错误)

    1.通常情况下,两个包装类型只有在两个引用指向同一对象时,使用 == 进行比较时才会返回true 例如: Double do1 = Double.valueOf(1.23); Double do2 = ...

  8. java疯狂讲义第八章-集合

    8. java疯狂讲义第八章-集合 Java 集合就像一种容器, 可以把多个对象(实际上是对象的引用,但习惯上都称对象) "丢进"该容器中. java集合分为Set.List.Qu ...

  9. Java编程思想读书笔记(七)

    点击蓝字 关注我们 今天是端午节,在这里祝大家端午节安康.过节的同时也不要忘记知识储备,今天我 为大家带来了Java编程思想第七节多形性读书笔记.请大家一起品鉴,如果发现里面有啥写的不对的地方,请大家 ...

  10. 疯狂python讲义学习笔记——中十章完结

    #第十一章 thinker import tkinter as tk print(help(tk.Button.__init__))#以按扭为例查看有什么属性 class myApplication( ...

最新文章

  1. 推荐8款有趣实用的软件,建议你先收藏,总有一天你会用到
  2. javax消息队列_java实现消息队列的两种方式(小结)
  3. LeetCode算法题3:求最大子序列和
  4. Java课程作业02
  5. [Swift]LeetCode793. 阶乘函数后K个零 | Preimage Size of Factorial Zeroes Function
  6. SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
  7. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
  8. java之包装类与BigInteger、BigDecimal
  9. cygwin This indicates that the /etc/passwd (and possibly /etc/group) files should be rebuilt 问题解决办法
  10. windows.old可以删除吗_C盘里的文件夹都有何用?可以删除吗?哪些可以删除?
  11. 关于职场的6个深刻道理,每个都是血泪教训换来的,你一定要懂
  12. linux命令(日常更新)
  13. 如何编写高质量的程序
  14. 【第18周复盘】要不要带小朋友们参加一下天池的Python训练营?
  15. mui获取手机设备信息
  16. Blender建模模块:把顶点压平的优雅姿势
  17. oracle中的crs,Oracle CRS简介
  18. FormatdataLibsvm.xls的使用
  19. 全球与中国制药工艺用隔膜阀市场现状及未来发展趋势
  20. 分析《 yolov7人脸+手机检测模型训练》

热门文章

  1. 几款web富文本编辑器汇总整理
  2. 武汉理工大学计算机专业课程表,武汉理工大学2014年春季第一周课表.xls
  3. LCD1602简易驱动程序
  4. Web压力测试和手机App测试
  5. 【微信小程序使用阿里巴巴矢量图标库】
  6. cmd-ssh使用说明
  7. ie8 ajax提交表单,IE8下 ajaxSubmit兼容问题
  8. 如何选择企业数据加密软件?
  9. 编址与存储相关计算(一)——软考之路
  10. C++递归算法经典实例详解