Java笔记 第10章 异常
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章异常
第一节异常的基本概念
一. 程序中可能出现的错误
1. 编译错误: 在编码过程中出现的编码错误,编译阶段就能发现,不能依据源代码生成字节码.必须进行源代码修改.
2. 在运行阶段出现的错误分为两种,
一种就是内部错误,例如内存资源不足,出现这样的错误,编码人员是无能为力,只能提示用户安全退出.
另一种称为异常,程序在运行阶段由于设计缺陷导致程序运行中断,称为运行时异常(例如整数除0),还有一种异常有可能发生,有可能不发生,这样的异常在编译阶段就能发现,必须进行处理,称为非运行时异常(例如文件下载时由于文件).
3. 在java中所有异常的父类是Throwable,Throwable有两个子类分别是Error(内部错误)和Exception(异常),Exception又分为RunntimeException(运行时异常)和非运行时异常(Ioexception,SQLException)
二. 异常处理:
1. 对于运行时异常,不提倡进行处理,而是要修改源代码,将重大的逻辑错误排除.
2. 对于非运行时异常,在java中必须进行处理,否则出现编译错误.
3. 异常处理以运行时异常为例,进行异常处理(学习异常处理语法的需要).
4. 异常处理的语法:
try{可能产生异常的语句}
catch(异常类型(类名) 变量名)
{
异常处理语句
}
[
catch(异常类型(类名) 变量名)
{
异常处理语句
} //表示可能产生多个异常
]
[
finally{无条件被执行的语句}
]
语法说明;
(1) 一个try块可以对应一个或者多个catch块,如果对应多个catch块,则catch块要按照异常的类型的从小到大排列.
(2) try…catch…finally块之间不能有任何的其他独立语句
(3) finally块: 在程序运行结束前无条件被执行的语句,如果没有可缺省
(4) 执行顺序:
a)如果try块没有发生异常,跳过catch块执行finally块,再执行其他语句。
b)如果try块有异常产生,执行到第一条产生异常的语句,进入对应的catch块执行
语句,在执行finally块,再执行其他语句。
c)finally块之前如果存在return或者是System.exit(0)语句,finally块
会被执行,其他语句不执行。
(5) 是java中的跳转语句之一
(6) try、catch、finally都可以嵌套try...catch
例如: try{}
catch(ArithMeticException e){
}
catch(Exception e){
}
finally{
无条件被执行的语句,例如关闭数据库}
三. throw和throws:
1. throw用在方法中表示产生一个异常并抛出,语法是throw 异常对象
2. throws如果方法中产生了异常并没有去处理,可以通过throws通知调用者去处理,直至系统,语法是
void test() throws 异常类型[,异常类型…..]
第二节自定义异常
1. 自定义异常要求这个类要继承自Exception父类,自定义异常都是非运行时异常,如果使用了这个异常类,必须要进行异常处理或者是异常通知.
(1) 自定义异常定义:
补充内容:
单元测试: 程序员在编码完成后对某一个功能模块(case)进行的自测,单元测试的代码应该独立于功能模块的代码,当项目代码提交前应该删除.
(1) 下载或者使用工具提供的JUnit api jar包
(2) 定义一个单元测试类,要求继承自TestCase类
(3) 在该类中添加一个带有“test”方法名的方法,该方法即可通过JUnit的方式运行