《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
最新文章
- Unity3D–RectTransfrom 记录笔记
- 火车采集器 帝国CMS7.2免登录发布模块
- .net 获取https页面的信息 在iis7.5服务器上不管用
- Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)
- bzoj2515 Room
- iOS SQLite增删改查(简单应用)
- MYSQL存储过程实现in传入参数 where in('1','2')
- xcode设置 - App内存暴增
- 018如何建立自动化框架 how to bulid the framwork
- shell中的expr命令
- 利用浏览器调试APP中的H5页面
- [Swift]LeetCode783. 二叉搜索树结点最小距离 | Minimum Distance Between BST Nodes
- 富文本编辑器Quill(一)简单介绍
- Properties类
- easyui equals验证代码
- Spring Boot之logback日志最佳实践
- Uc的个人中心很奇葩
- openresty(完整版)Lua拦截请求与响应信息日志收集及基于cjson和redis动态路径以及Prometheus监控(转)
- week4a:个人博客作业
- PostgreSQL高可用集群方案收集/主从切换/一主多从(待实践)