1).了解异常的概念
2).理解异常的作用
3).掌握常见的异常
4).掌握异常体系结构
5).掌握异常的处理
6).掌握异常的抛出与捕获
7).了解自定义异常
1、什么是异常
异常类通常用来定义程序在运行过程中遇到的轻微意外,可以写代码来处理异常并继续程序执行,而不是让程序中断。
2、异常机制的作用
1).健壮性
2).交互性
3、常见异常
NullPointerException:非法使用空引用
ArithmeticException:算术错误,如被0除
ArrayIndexOutOfBoundsException:数组下标出界
IndexOutOfBoundsException:某些类型索引越界
NumberFormatException:字符串到数字格式非法转换
ClassCastException:非法强制转换类型
ClassNotFoundException:类找不到-编译时异常
FileNotFoundException:文件没有找到-编译时异常
SQLException:数据操作异常(操作数据库时常见异常)
...
4、异常体系结构-PPT
Object<-Throwable<-Error
<-Exception<-RuntimeException(编译时异常)
<-运行时异常
Exception是所有异常类的父类
异常体系结构说明:
Error :JAVA程序运行过程中如果出现了错误,错误是不能处理的,
只能退出JVM。
例如:StackOverflowError,运行时磁盘空间不够,内存不够。。。
Exception :是可以处理的。如果没有处理异常,则程序直接退出
JVM虚拟机。只有处理了程序才能继续执行!
5、异常类Exception
构造函数
它从Throwable类那里继承了若干方法。
常用的为:
public String toString():返回异常类信息
public void printStackTrace():在当前标准输出上输出异常信息
getMessage();
编译时异常和运行时异常(RuntimeException)的区别:
编译时异常:常指程序在编写时就会发生的异常,必须使用try...catch进行处理
运行时异常:指程序在运行时发生的异常,可以不使用try..catch进行处理。但是为了保证程序的健壮性,建议在有可能发生异常的地方还是使用try..catch 处理
6、异常处理
Java的异常处理是通过5个关键字来实现的:
try catch finally throw throws
1).try/catch
try
{
// 可能异常的代码段
}
catch (异常类型 ex)
{
// 对异常进行处理的代码段
}
// 代码段
使用try/catch块捕获异常,分为三种情况:
第一种情况:
try {
// 代码段1(此处不产生异常)
} catch (异常类型 ex) {
// 对异常进行处理的代码段
}
// 代码段5
注:如果没有产生异常,则会继续执行,代码段5会执行
第二种情况:
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) { //异常类型匹配
// 对异常进行处理的代码段4
}
// 代码段5 //会执行
注:代码段1先执行,运行到代码段2时产生异常,则代码段3不会执行,
直接捕捉代码段2的异常,若处理成功,则代码段5会继续执行
第三种情况:
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) { //异常类型不匹配
// 对异常进行处理的代码段4
}
// 代码段5
注:代码段1会执行,运行到代码段2时产生异常,代码段3不会执行,
而是直接跳到捕捉异常,若处理不成功,则会出现错误,代码段5不会继续执行
2).try/catch/finally
面试题:谈谈final,finalize,finally的区别。
final用于声明属性,方法,类,分别表示属性不可变,方法不能被重写,类不能被继承。
finalize是Object类的子类,在垃圾回收机制里起作用
finally 一般会和try..catch配套使用,不能单独使用,里面的代码一定会执行。
3).多重catch块
try {
// 代码段
// 产生异常(异常类型2)
} catch (异常类型1 ex) { //与异常类型1不匹配
// 对异常进行处理的代码段
} catch (异常类型2 ex) { //与异常类型2匹配
// 对异常进行处理的代码段
} catch (异常类型3 ex) {
// 对异常进行处理的代码段
}
// 代码段
注意:在使用多catch语句时,记住异常子类必须在他们的任何父类之前使用
补充:JAVA异常处理机制【面试题】
在整个JAVA 的异常处理中,实际上也是按照面向对象的方式进行处理的,处理的步骤:
1、一旦产生异常,则首先会产生一个异常类的实例化对象,
2、产生的异常对象与catch语句中的各个异常类型进行匹配,。若匹配成功,则执行catch语句中的代码
7、异常的抛出:
两种方式:
①在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
②在【方法体内】抛出异常(利用throw语句)
1).throws声明异常
语法:
修饰符 返回类型 方法名称(参数列表…) throws 异常类型1,异常类型2…
{
...
}
2).throw抛出异常,一般和if 语句配合使用
语法:
throw new 异常类型();(常用)
throw new 异常类型("异常描述");
面试题:throw和throws关键字的区别
1、throw最好和if 语句配和使用
2、在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
7、自定义异常
步骤:
1).新建一个普通的类,继承自Exception或者RuntimeException。
2).定义一个无参的构造函数,一个带参数的构造函数。
3).编写一个方法,抛出自定义的异常
4).在main方法中调用此方法并且捕获这个异常
语法:
class 自定义异常类名 extends Exception
{
异常类体;
}
2).理解异常的作用
3).掌握常见的异常
4).掌握异常体系结构
5).掌握异常的处理
6).掌握异常的抛出与捕获
7).了解自定义异常
1、什么是异常
异常类通常用来定义程序在运行过程中遇到的轻微意外,可以写代码来处理异常并继续程序执行,而不是让程序中断。
2、异常机制的作用
1).健壮性
2).交互性
3、常见异常
NullPointerException:非法使用空引用
ArithmeticException:算术错误,如被0除
ArrayIndexOutOfBoundsException:数组下标出界
IndexOutOfBoundsException:某些类型索引越界
NumberFormatException:字符串到数字格式非法转换
ClassCastException:非法强制转换类型
ClassNotFoundException:类找不到-编译时异常
FileNotFoundException:文件没有找到-编译时异常
SQLException:数据操作异常(操作数据库时常见异常)
...
4、异常体系结构-PPT
Object<-Throwable<-Error
<-Exception<-RuntimeException(编译时异常)
<-运行时异常
Exception是所有异常类的父类
异常体系结构说明:
Error :JAVA程序运行过程中如果出现了错误,错误是不能处理的,
只能退出JVM。
例如:StackOverflowError,运行时磁盘空间不够,内存不够。。。
Exception :是可以处理的。如果没有处理异常,则程序直接退出
JVM虚拟机。只有处理了程序才能继续执行!
5、异常类Exception
构造函数
它从Throwable类那里继承了若干方法。
常用的为:
public String toString():返回异常类信息
public void printStackTrace():在当前标准输出上输出异常信息
getMessage();
编译时异常和运行时异常(RuntimeException)的区别:
编译时异常:常指程序在编写时就会发生的异常,必须使用try...catch进行处理
运行时异常:指程序在运行时发生的异常,可以不使用try..catch进行处理。但是为了保证程序的健壮性,建议在有可能发生异常的地方还是使用try..catch 处理
6、异常处理
Java的异常处理是通过5个关键字来实现的:
try catch finally throw throws
1).try/catch
try
{
// 可能异常的代码段
}
catch (异常类型 ex)
{
// 对异常进行处理的代码段
}
// 代码段
使用try/catch块捕获异常,分为三种情况:
第一种情况:
try {
// 代码段1(此处不产生异常)
} catch (异常类型 ex) {
// 对异常进行处理的代码段
}
// 代码段5
注:如果没有产生异常,则会继续执行,代码段5会执行
第二种情况:
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) { //异常类型匹配
// 对异常进行处理的代码段4
}
// 代码段5 //会执行
注:代码段1先执行,运行到代码段2时产生异常,则代码段3不会执行,
直接捕捉代码段2的异常,若处理成功,则代码段5会继续执行
第三种情况:
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) { //异常类型不匹配
// 对异常进行处理的代码段4
}
// 代码段5
注:代码段1会执行,运行到代码段2时产生异常,代码段3不会执行,
而是直接跳到捕捉异常,若处理不成功,则会出现错误,代码段5不会继续执行
2).try/catch/finally
面试题:谈谈final,finalize,finally的区别。
final用于声明属性,方法,类,分别表示属性不可变,方法不能被重写,类不能被继承。
finalize是Object类的子类,在垃圾回收机制里起作用
finally 一般会和try..catch配套使用,不能单独使用,里面的代码一定会执行。
3).多重catch块
try {
// 代码段
// 产生异常(异常类型2)
} catch (异常类型1 ex) { //与异常类型1不匹配
// 对异常进行处理的代码段
} catch (异常类型2 ex) { //与异常类型2匹配
// 对异常进行处理的代码段
} catch (异常类型3 ex) {
// 对异常进行处理的代码段
}
// 代码段
注意:在使用多catch语句时,记住异常子类必须在他们的任何父类之前使用
补充:JAVA异常处理机制【面试题】
在整个JAVA 的异常处理中,实际上也是按照面向对象的方式进行处理的,处理的步骤:
1、一旦产生异常,则首先会产生一个异常类的实例化对象,
2、产生的异常对象与catch语句中的各个异常类型进行匹配,。若匹配成功,则执行catch语句中的代码
7、异常的抛出:
两种方式:
①在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
②在【方法体内】抛出异常(利用throw语句)
1).throws声明异常
语法:
修饰符 返回类型 方法名称(参数列表…) throws 异常类型1,异常类型2…
{
...
}
2).throw抛出异常,一般和if 语句配合使用
语法:
throw new 异常类型();(常用)
throw new 异常类型("异常描述");
面试题:throw和throws关键字的区别
1、throw最好和if 语句配和使用
2、在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
7、自定义异常
步骤:
1).新建一个普通的类,继承自Exception或者RuntimeException。
2).定义一个无参的构造函数,一个带参数的构造函数。
3).编写一个方法,抛出自定义的异常
4).在main方法中调用此方法并且捕获这个异常
语法:
class 自定义异常类名 extends Exception
{
异常类体;
}