当前课程知识点:Java程序设计 >  第五章 输入输出 >  5.1.3-5.1.5-异常的处理 >  5.1.3-5.1.5-异常的处理

返回《Java程序设计》慕课在线视频课程列表

5.1.3-5.1.5-异常的处理在线视频

5.1.3-5.1.5-异常的处理

下一节:输入输出流的概念

返回《Java程序设计》慕课在线视频列表

5.1.3-5.1.5-异常的处理课程教案、知识点、字幕

大家好

欢迎回来继续学习

Java语言程序设计

这一节我们来学习异常的处理

对于检查型的异常

我们的程序是必须关注的

关注的方式有两种

第一种可以是不打算处理

那你就要声明说

我要继续抛出这种异常

那么不打算在当前方法内处理

那就可以使用throws子句

将这个异常抛出到调用者方法中

那么我们想一想如果我们程序中

所有的方法都选择了

抛出某种类型的异常

那也就是我们整个程序

都不打算处理这个异常

那最后它抛到哪儿去了呢

最后它就抛给Java虚拟机了

那么Java虚拟机就会捕获它

并且输出相关的错误信息

终止程序的运行

当然更多的情况下

我们应该负起责任来处理异常

那么就要使用try-catch

这样一套机制去捕获异常

然后进行相应的处理

下面我们来看这个图

这个图上示意性的

画出了方法之间的一个调用关系

它的意思是方法1

Method1调用方法2

然后方法2调用方法3

方法3调用方法4

这个时候如果在方法4中

探测到有异常发生

那方法4可能选择说

我不处理这个异常

我抛出这个异常

那么抛到哪儿去了呢

就会沿着调用栈的方向向上抛出

也就是说方法4会把这个异常

抛给它的调用者方法3

方法3如果不处理

就继续抛给方法2

方法2要依然不处理

它可能抛给方法1

那这个时候如果方法1

打算在这个地方处理异常

那么它就应该捕获异常

并且就地处理

下面我们来看一个

不捕获直接抛出异常的例子

在这个例题中我们模拟

调用一个文件访问的方法

在这个文件访问方法中

是有可能抛出异常的

当然我们现在还没有讲

怎么样访问文件

所以这个文件访问的具体代码

我们就省略了

但是open ThisFile

这个方法它声明了

有可能抛出文件找不到这种异常

于是我们这个getCustomerInfo这个方法

去调用了open ThisFile方法

那就说明在这个方法中

也是有可能发生异常的

因为它调用的异常

有可能把异常向上抛出到这个位置

那我们写的get CustomerInfo方法

有两个选择

一个是自己捕获处理异常

另一个就是声明

我不处理我也继续抛出

那在这个例子里面

它声明了继续抛出这种异常

这个异常就又抛出

给它的调用者了

如果我们需要在当前方法中

捕获并且处理异常

那么该怎么做呢

大家看这里给出了

try catch finally语句

如果我们需要在当前方法中

处理这个异常

那么我们就要

将有可能产生异常的代码块

放在try语句之中

那么跟在try语句之后

是这个catch语句

catch语句之后的这个模块

是用来捕获和处理异常的

在这里通常都要用到两个方法

一个是getMessage

这个方法返回一个字符串

字符串就包含了

对异常信息进行描述的内容

另外一个就是printStackTrace

这个分子是给出方法调用的序列

也就是调用站

那么finally语句

是不管在try代码段

是否产生了异常都要被执行的

通常我们在这里

释放内存以外的其他资源

那么需要注意的是

如果在try语句后面的块里面

有可能抛出多种类型的异常

那就需要在try之后

跟多个catch块

来捕获不类型的异常

那么这个时候一般就会

将更特殊的异常放在前面

将更一般的异常放在后面

也就是说如果我们

需要捕获的几个异常

其中有超类有子类的话

那我们应该首先

捕获子类类型的异常

后捕获超类类型的异常

我们知道了如何去捕获异常对象

并且处理异常

那么异常对象从哪儿来的呢

谁来产生异常对象呢

生成异常对象有三种方式

第一种方式就是

由Java虚拟机生成的

第二种是由Java类库里面的

某些类生成的

第三种就是在自己写的程序中

我们程序代码自己生成

和抛出异常对象

抛出异常对象都是

通过throw语句来实现的

这个被抛出的对象

必须是Throwable或者

其子类的实例

我们看这里给出两个例子

第一个例子我们在throw语句中

通过new操作构造一个异常对象去抛出

或者我们也可以

先构造一个异常对象

将它的引用

放在一个引用变量里面

然后throw这个引用变量

下面我们就来看一个

生成和抛出异常对象的例子

在这个例题中

我们主动来生成异常并且抛出

我们看在这几个try和catch块里边

我们都分别生成了

几种不同类型的异常

在try块里面生成异常

然后在catch块里面捕获这种异常

简单的处理一下

就是将异常对象的信息输出

这个就是模拟了什么

模拟了我们可以在程序逻辑中

判断当什么情况发生的时候

我们就认为这是

我们自己认为的某种异常

我们自己程序约定好这算异常

那我就抛出一个

我们约定类型的异常

也就说异常不见得都是

我们调用系统类库里面的方法

以后我们被动接收

被调用的方法抛出的异常

我们自己写的方法

也是可以主动生成异常的

就new一个异常对象

然后就抛出就可以了

我们看这是运行结果

在每个catch块中

我们输出了异常对象

里面包含的信息

也就是说这是个异常类的信息

使得用户知道发生了

什么类型的异常

除了使用系统预定的异常类以外

我们程序员写程序

还可以声明自己的异常类

我们在程序中自己声明的异常类

都必须是Exception类的子类

可以是直接的子类

也可以是间接的子类

这里给出了声明异常类的语法

我们看到这儿必须继承一个超类

这个超类可以本身

就是Exception类

或者是Exception的子类都可以

那么在自己声明的

这个异常类的构造方法中

第一句话应该是调用

它超类的构造方法

这个时候应该传一个字符串进去

那么这个字符串参数

应该是用来描述异常的信息的

也就是说到底发生了什么

要用这个字符串来描述

这一节我们学习了异常处理的机制

学习了try catch finally语句

以及怎么样声明自己的异常类

构造异常对象抛出异常对象

还有捕获和处理异常对象

这一节内容就是这些

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

5.1.3-5.1.5-异常的处理笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。