《Java大学教程》—第15章 异常
自测题:
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章 异常的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- [core java学习笔记][第十一章异常断言日志调试]
第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- 《Java大学教程》—第22章 多线程程序
22.2 进程(process):P551时间切片(time-slicing):处理器只是完成了一个任务的一部分工作,然后完成下一个任务的一部分工作,因为处理吕每次完成工作的时间都非常短,因此看起来这 ...
- 《Java大学教程》—第19章 改进用户界面
用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2 Border接口8个实现Border接口的标准边框类: ...
- 《Java大学教程》—第17章 Java聚焦类框架
由所有聚焦类构成,在java.util包中,包含三个重要接口:* List列表:元素为单个对象,元素在列表中是有序.可重复* Set集合:元素为单个对象,元素在集合中无序.不可重复* ...
- 《Java大学教程》—第14章 抽象、继承和接口
自测题:1. 解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...
- 《Java大学教程》—第12章 案例研究--第2部分
本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1. 正确运行2. Runhostel.java3. searchButton
随机推荐
- TensorFlow.js入门(一)一维向量的学习
TensorFlow的介绍 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着 ...
- asp .net core Get raw request.
小弟初来乍到,分享一些工作学习中遇到的问题和解决方式,如有不准确或是有错误的地方,希望不吝赐教,谢过了. --Dogtwo 背景: 一个代理服务器BK,接收前端A发送的请求,记录log,并转发给 ...
- hihoCoder编程练习赛72
题目1 : 玩具设计师 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho作为Z国知名玩具品牌AKIRE的首席设计师,对玩具零件的挑剔程度已经到了叹为观止的地步.所有 ...
- bat文件传递参数
%*是表示命令行传过来的参数,%1表示第一个参数,%2表示第二个参数,以此类推.如执行C:/>hello.bat hello world, %1取出来就是hello %2取出来就是world h ...
- WePY - 小程序敏捷开发实践丨掘金开发者大会
声明:内容转载他处,如有侵权,可协商下架 本主题虽然在其它地方讲了很多次,但还是有非常多新内容.因为很多东西正在做或者想要做.本次分享主要分为以下几个部分: WePY 的介绍 WePY 的用户 上面展 ...
- 玩游戏 学Flex布局
大家好,今天推荐一个学习Flex布局的网页小游戏,非常不错,是国外的牛人开发的,值得一试,重复几次,就会大概了解Flex的属性了! 地址: http://flexboxfroggy.com/#zh-c ...
- Link Between SAP SD, MM & FI
Link Between SAP SD, MM & FI 1. In SAP you will always get integration with other modules. SD wi ...
- Python入门基础之list和tuple
Python之创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: > ...
- java StringBuffer读写文件
java StringBuffer读写文件 StringBuffer的优势 较String:String每更新一次就会new一个新的对象出来,更新次数上去之后,内存开销太大.而StringBuffer ...
- (网页)jQueryAJAXtimeout超时问题详解(转)
先给大家分析下超时原因: 1.网络不通畅. 2.后台运行比较慢(服务器第一次运行时,容易出现) 超时结果:JQ中 timeout设置请求超时时间. 如果服务器响应时间超过了 设置的时间,则进入 ERR ...