一艘没有航向的船,不管什么方向的风都是逆风。
1、什么是异常:
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
2、什么是异常处理:
java编程语言使用异常处理机制为程序提供了错误处理的能力
3、java中如何进行异常处理:
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
try-->执行可能产生异常的代码
catch-->捕获异常
finally-->无论是否发生异常,代码总是可以执行
throws-->声明异常,声明方法可能要跑出的各种异常
throw-->抛出异常,手动抛出异常
4、try-catch捕获异常的三种情况:
第一种情况:正常
public void method(){
try{
//代码段(此处不会产生异常)
}catch(异常类型ex){
//对异常进行处理的代码段
}
//代码段
}
第二种情况:出现异常
public void method(){
try{
//代码段1
//产生异常的代码段2
//代码段3
}catch(异常类型ex){
//对异常进行处理的代码段4
}
//代码段5
}
第三种情况:异常类型不匹配
public void method(){
try{
//代码段1
//产生异常的代码段2
//代码段3
}catch(异常类型ex){
//对异常进行处理的代码段4
}
//代码段5
}
5、异常对象常用的方法:
方法 | 说明 |
---|---|
void printStackTrace() | 输出异常的堆栈信息 |
String getMessage() | 返回异常信息描述字符串,是printStackTrace()输出信息的一部分 |
6、常见的异常类型:
异常类型 | 说明 |
---|---|
Exception | 异常层次结构的父类 |
ArithmeticException | 算术错误情形,如以零作除数 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 尝试访问 null 对象成员 |
ClassNotFoundException | 不能加载所需的类 |
IllegalArgumentException | 方法接收到非法参数 |
ClassCastException | 对象强制类型转换出错 |
NumberFormatException | 数字格式转换异常,如把"abc"转换成数字 |
7、try-catch-finally
public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
} catch (异常类型 ex) {
// 对异常进行处理的代码段3
return;
}finally{
// 代码段 4
}
}
当try结构中的代码产生的异常,catch结构不能处理,依然会中断程序的执行,但是我希望不管产生的异常能不能处理,“程序执行完毕”这行代码都会输出 在catch结构后面添加一个finally语句块,不管前面的异常有没有处理,finally语句块中的代码都会执行。 finally语句块中的代码唯一不执行的情况是在前面的try结构或者catch结构中存在退出系统的语句System.exit(1)。
8、throw与throws
throw | throws |
---|---|
生成并抛出异常 | 声明方法内抛出了异常 |
位于方法体内部,可作为单独语句使用 | 必须跟在方法参数列表后面,不能单独使用 |
抛出一个异常对象,且只能是一个 | 声明抛出异常类型,可以跟多个异常 |
例子:
public class Student {
private String gender;
public Student() {
super();
}
public Student(String gender) {
super();
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setGender(String gender) throws Exception {
this.gender = gender;
throw new Exception("性别只能为男或者女");
}
}
测试类:
public class Test {
public static void main(String[] args) {
/*当我们调用一个声明了异常的方法(构造方法和普通方法),我们需要去解决这个方法声明的异常,有两种方法解决:
1)继续进行声明,谁调用谁继续声明,main方法声明的异常由Java虚拟机来处理
2)调用产生了异常的方法,可以进行try-catch处理
*/
try {
FileInputStream fis = new FileInputStream("D://笔记//8.9.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Student stu = new Student();
try {
stu.setGender("男");
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文含有隐藏内容,请 开通VIP 后查看