自测题:
1.    什么是异常?P357
异常是在程序生命周期内出现的事件,它会导致程序行为不可靠。

2. 已检查异常和未检查异常的区别是什么?P359
在编译器允许程序被编译通过前,要求程序员必须编写代码,告诉编译器如何处理由特定指令产生的已检查异常。
但是编译器对可能产生的未检查异常并不认为存在潜在的错误可能,也就不会要求程序员必须编写代码处理,只是希望程序员在编写代码时就尽量避免出现这类异常。

已检查异常:FileNotFoundException, IOException, Exception
未检查异常:NegativeArraySizeException, NumberFormatException, ArrayIndexOutOfBoundsException, RuntimeException

3.
a)    抛出异常:P357 每种导致异常的事件类型都对应Java中一个预定义的异常类。当出现某个事件时,Java运行环境就会判断出现异常的类型,
并且生成一个该异常类的对象。这个过程称为抛出(throwing)异常。

b)    声明异常:P361 是指为给定的方法做一个标记,含义是该方法可能会生成一个异常类的对象。

c)    捕捉异常:P364 在某个位置可以控制异常对象,而不是仅仅抛出它们。在Java中,这个过程称为捕捉异常(catching an exception)。

4.    finally语句的作用是什么?P367
无论try程序块中发生任何情况,都希望在程序终止运行前执行一些特别的指令,处理一些清理工作,因此就需要在try...catch程序块的最后部分声明finally程序块。

5.
a)    不会编译错误
b)    Integer.parseInt()和arrayIn[posIn]会抛出异常
c)    输入字母,导致NumberFormatException;输入超过数组边界的数会导致ArrayIndexOutOfBoundsException。

6.    什么情况下需要定义自己的异常类?P378,P380
从构造函数中报告错误的唯一方法是使用异常。但是抛出异常通用异常对象方法使程序无法通过名称知道问题的原因,
还需要借助于getMessage方法来补充信息;并且用于处理特定异常对象的catch语句却将捕捉所有被抛出的异常,
因为所有的异常都是从通用异常类(Exception)派生的。为了希望使用与处理构造函数异常不同的方式来处理其他异常,
因此就得创建自己的异常类。

编程练习:代码附件
1.    ExceptionQ5.java

2.   
a)    ScannerTester.java
b)    EasyScannerPlus.java
c)    EasyScannerPlusTester.java

3.    Hostel.java,    ObjectList.java,    Payment.java,    PaymentList.java,    Tenant.java,    TenantList.java,    NegativeSizeException.java

《Java大学教程》—第15章 异常的更多相关文章

  1. 正在学习的Java大学教程

    推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...

  2. [core java学习笔记][第十一章异常断言日志调试]

    第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...

  3. 《Java大学教程》—第24章 Java的背景

    本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2    语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...

  4. 《Java大学教程》—第23章 Java网络编程

    本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...

  5. 《Java大学教程》—第22章 多线程程序

    22.2 进程(process):P551时间切片(time-slicing):处理器只是完成了一个任务的一部分工作,然后完成下一个任务的一部分工作,因为处理吕每次完成工作的时间都非常短,因此看起来这 ...

  6. 《Java大学教程》—第19章 改进用户界面

    用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2    Border接口8个实现Border接口的标准边框类: ...

  7. 《Java大学教程》—第17章 Java聚焦类框架

    由所有聚焦类构成,在java.util包中,包含三个重要接口:*    List列表:元素为单个对象,元素在列表中是有序.可重复*    Set集合:元素为单个对象,元素在集合中无序.不可重复*    ...

  8. 《Java大学教程》—第14章 抽象、继承和接口

    自测题:1.    解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...

  9. 《Java大学教程》—第12章 案例研究--第2部分

    本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1.    正确运行2.    Runhostel.java3.    searchButton

随机推荐

  1. JS_object添加变量属性_动态属性

    总结,给对象动态添加变量属性的方法如下: obj[变量]=变量值; 备注: obj.属性=属性值 ; obj={属性:属性值}; 这两种方式添加的属性都不能使用变量作为属性. 犯过的错误: var t ...

  2. 【转载】PhpStudy修改网站根目录

    phpStudy是一个PHP调试环境的程序集成包.该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  3. springMVC_05结果跳转方式

    一.总结 总共有四个, 1.设置ModelAndView的值,根据view和视图解析器跳转到指定的页面 2.通过servletapi对象来实现,不需要视图解析器 3.通过springmvc来实现转发和 ...

  4. python基础学习(六)函数基础

    函数的基本使用 函数的定义 def 函数名(): 函数封装的代码 …… def 是英文 define 的缩写 函数名称 应该能够表达 函数封装代码 的功能,方便后续的调用 函数名称 的命名应该 符合 ...

  5. 升级mac自带的python

    系统自带的Python $ which python 终端输出 /usr/bin/python 使用Homebrew安装最新的Python2 为什么要使用Homebrew安装Python? 总能下载到 ...

  6. css重写checkbox样式

    一.前言 默认的checkbox长这样: <p> <span><input type="checkbox" /></span> &l ...

  7. Codeforces617E(莫队)

    E. XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input ...

  8. 04-HTML-图片标签

    <html> <head>  <title>图片标签学习</title>  <meta charset="utf-8"/> ...

  9. CSS琐碎知识点(持续补充)

    一.字体单位,pt?px?em?rem? pt:磅,一种固定长度的绝对的度量单位,是能够使用测量设备测得的长度,印刷业上经常使用,一般用于页面打印排版. px:屏幕设备上能显示出的最小的一个物理点,这 ...

  10. 【爬虫】在使用xpath时,排除指定标签

    xpath排除某个节点 主要时应用name()这个函数获取便签名 res = html.xpath("//*[name(.)!='style']")