一.异常
1.概念
1)广义:指的是程序运行中发生的所有不正常的情况
2)狭义:指的是java中的一个描述不正常的类Exception
2.java的异常继承体系
1)顶层父类:java.lang.Throwable(可抛出的)
2)第一个子类:Error(错误)
从代码层面,不能解决,只能规避
3)第二个子类:Exception(异常)
代码层面问题,可以解决或修改
3.异常的分类
1)java代码生命周期:
源码 -->编译 -->运行时
2) 编译异常:
在编译时期,不处理,会编译报错的异常
典型:IOException
3)运行时异常
在编译时期,不处理,不会编译报错的异常(发生在运行时)
0) 共同父类:RuntimeException
1) NullPointException 空指针
2) IndexOutOfBoundsException:索引越界异常
3) ClassCastException 类型转换异常
4) IllegalArgumentException 非法参数异常
4.处理异常的两种方式
1. try...catch
2. throws
二 自定义异常
## 1.抛出异常
1)关键字:throw
2)语法:throw 异常对象
3)含义:表示异常对象会被抛出给方法的调用者
4)使用场景:设计方法的时候,如果当前方法被非法调用,方法设计者可以直接抛出异常,以产生警示作用
5)throw 和 throws区别
I throws写在方法声明,只是表示此方法有可能有异常(声明)
II throw + 异常对象:表示抛出一个异常对象给调用者(行为)
## 2异常的补充
1)父类方法如果没有声明抛出编译异常,子类也不能声明
2)父类方法声明抛出编译异常,子类是否声明都可以
三.多线程
## 1.进程和线程
0).基础概念
一个软件启动,至少一个进程
一个进程运行,至少一个线程
1)进程:
统筹软件执行时需要的资源,进行资源调度
2)线程
使用线程中的一部分资源,去完成运算
2.并行和并发
1).并行:同一时间点,一起发生
2).并发:同一时间段,一起发生(常见)
3. 总结
1) 线程:计算机中进行运算的最小单位
一个线程只能执行一个任务
如果需要同时执行多个任务,就需要多个线程
2).线程并发:多个线程同时运行
3).线程执行:需要cpu调度(抢占式调度,随机性)
4.线程的创建方式
1) 线程的第一种创建方式:
I.一种方法是将类声明为Thread的子类
II.该子类应该重写Thread类的run方法
III.接下来可以分配并启动该子类的实例
### start和run方法的区别
如果我们直接调用线程对象的run方法,那么当前线程和普通对象米有任何区别。
启动start,jvm会让线程就绪,只要cpu分配执行权,线程就会真正运行
2)线程的第二种创建方式
I 声明实现Runnable接口的类
II 该类然后实现run方法
III 然后可以分配该类的实例,创建Thread时作为一个参数来创建并启动