自测题:
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. Java并发(一)—— 使用多线程

    Java的线程机制是抢占式的,所谓的抢占式指的是每一个线程都会被分配一个指定大小的时间片,一旦这个时间片用完,就会通过上下文切换到另一个线程上去. 并发是主要是为了提高单处理器的性能.创建一个线程会有 ...

  2. ls 指令的介绍

    每个文件在linux下面都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢? modification time (mtime) : 当该文件的“内容数据”变更时,就会更 ...

  3. c# 调用微吼直播API

    /// <summary> /// 调用微吼直播API /// </summary> /// <param name="appKey">< ...

  4. Netty 系列三(ByteBuf).

    一.概述和原理 网络数据传输的基本单位总是字节,Netty 提供了 ByteBuf 作为它的字节容器,既解决了 JDK API 的局限性,又为网络应用程序提供了更好的 API,ByteBuf 的优点: ...

  5. mysql基础整理02

    比较运算符 > < = >= <= !=和<> !=和<>都是一个意思,都是不等于的意思 and和or and 并且&& 需要同时满足多 ...

  6. 你试过不用if撸代码吗?

    译者按: 试着不用if撸代码,是件很有趣的事,而且,万一你领会了什么是“数据即代码,代码即数据”呢? 原文: Coding Tip: Try to Code Without If-statements ...

  7. PS换脸操作

    1,使用套索工具抠出人的五官. 2,Ctrl+C复制黏贴到另一张头像中,调节透明度50%,与需要换脸的头像的眼睛,嘴巴,鼻子重合,透明度回归100%. 3,为了不该变原图,需要新建一张原图. 4,在抠 ...

  8. AOJ1370: Hidden Anagrams(hash)

    题意 题目链接 Sol 直接对出现的次数hash即可,复杂度\(O(26n^2)\) 一开始没判长度条件疯狂wa #include<bits/stdc++.h> //#define int ...

  9. redis中各种数据类型的常用操作方法汇总

    在spring中使用jedisTemplate操作,详见https://www.cnblogs.com/EasonJim/p/7803067.html 一.Redis的五大数据类型 1.String( ...

  10. C# 简单实现直线方程,抛物线方程

    本例子是简单的在WinForm程序中实现在坐标系中绘制直线方程,抛物线方程,点.重新学习解析几何方面的知识.仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: 直线方程的表达方式:一般表达式Ax ...