一 什么是异常?
1.含义:异与正常状态的显示,控制台显示的结果和预期的结果不一致
2.例如:
int[] nums = new int[2];
System.out.println(nums[2]); --抛出异常
二 异常分类
1.检测性异常:又称 非运行时异常,一般编写代码过程中编辑器直接报错
2.非检测性异常(常用):又称为运行时异常,Java运行时 单独封装一个类--RunTimeException类,一般是编写代码的时候 不会出现任何问题,一旦执行,没有获取到预期结果
三 异常类结构
通过上述的结构换分(从Exception类开始)
①对于异常的信息,解释越详细,异常类的名越长
②异常的名字划分两部分
Exception前:表示 对当前异常出现的详细描述
Exception表示当前类似异常类
四 异常解读
Exception:表示当前代码存在异常
in thread"main":在主线程中
java.lang.异常类名:表示当前出现的是什么异常
:值--对当前异常 是因为什么引起的
at cn......:表示当前的异常 出现代码的行数
特点:一旦出现异常,在这个异常之后的代码都不执行
五 异常处理机制
1.机制:按照Java中规定好的制定规则,完成对数据或业务的指定处理,称为机制.
2.分类
① 处理异常(常用):由程序员主动处理(后期 由Spring 框架完成)
②抛出异常:"不负责的处理",将异常向上抛出,谁调用谁处理
3 处理异常--3个
①语法格式
try{
捕获异常:完成对制定异常的处理
}catch(异常类 异常类对象){\
}.....
finally{
编写无论是否出现异常都要执行的代码,一般是编写 关闭资源的代码
}
②
import java.util.Scanner;
public class ExceptionDemo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
try {
System.out.println("下标");
int index=sc.nextInt();
int[] nums=new int[2]; //默认值是0
System.out.println(nums[index]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("是不是憨憨了");
}catch (Exception e){
e.printStackTrace();
}finally {
sc.close();
System.out.println("程序结束");
}
}
}
③执行原理
当try块中捕获异常后 马上执行 catch块中的内容,try块后续的代码都不执行,catch执行之后 在执行finally,如果try块中没有捕获异常 执行try中的所有代码执行finally
④执行特点
(1)组合操作
try catch finally 同时组合出现
try catch可以组合
try finally 可以组合
catch finally 不能组合
(2)这个三个代码块之间不能写任何代码
(3)try catch finally 可以嵌套 但是实际开发中很少这么使用
(4)当编写 多个catch块 编写顺序和执行顺序
catch既有编写顺序也有执行顺序,必须按照 异常的详细程序,越靠前越详细,执行只能执行最匹配的,完成处理
4.抛出异常
(1)throw:抛出一个或多个 异常 定义的位置 参数列表后面的多个异常 用逗号隔开
(2)throw:抛出指定异常的对象 定义位置方法体中
五 名词解析
1 Java语言的特点: 简单 健壮 多线程 完全面向对象 跨平台
2 多线程
①线程:一个APP最小的单位和单元
②进程:硬件设备上的每一个应用程序
③多线程:一个进程中 至少要有两个或者两个以上的线程在执行
最简单的Java程序,包含的线程:垃圾回收处理机制