1.异常
- 异常:代码执行过程中,参数不正确,规范不正确,都是异常
- 常见的异常:
- NullPointerException :空指针异常
- ArrayIndexOutOfBoundsException :数组下标越界
- ClassNotFoundException :类未找到异常
- ClassCastException :类型转换异常
java自身处理异常的流程:如果当前方法出现异常,则去检查当前方法,是否有处理异常,如果没有就抛给调用,调用方不处理一直抛到顶级调用方,如果都没有处理,则抛给jvm,jvm把异常打印出来,结束程序
处理异常:
1.自己处理
//try,catch代码块处理异常,分为单异常处理和多异常处理
//多异常处理是为了,针对每一种异常情况,都有对应解决办法
try{
//可以出现出现异常的代码
}catch(异常类型 变量名){
//捕获到异常之后的处理方案
}finally{
//最终执行,该代码块的内容不管什么情况都会执行
//注意这里不能写return语句
}
2.抛给调用方处理,自己不处理
1.throws
1.提示调用方方法可能会出现哪些异常
2.它是声明在方法后的
3.可以声明多个异常
4.如果是运行时异常,调用方可以选择性处 理,如果是非运行时异常调用方法必须处理
2.throw
2.1当已知业务会出现异常的时候,主动抛出异常给调用方
2.2异常可以使用jdk提供的异常,也可以自己定义异常
2.3如果被调用方,有抛异常的操作,调用方在调用的时候主动try catch
自定义异常:参考其他异常类(自定义一个类,继承异常,把自己加入异常体系)
获取错误的信息从哪里来?
- 异常类的有构造方法,把错误的信息,一致传递到了Throwable所有异常的基类,最后赋值给了
Throwable的一个字段 - 当我们在调用getMessage方法的时候
Throwable直接把这个字段的值返回给了我们
多线程基础
线程:一个程序运行就会有一个进程,一个进程中至少有一个线程,线程是进程的最小单位
线程又叫做异步线程,线程都是单独各执行各的互不干扰
java中我们把Thread类和Thread的子类称之为线程类,所有我们自己创建线程需要自定义一个类去继承
Thread类让它变成线程类,该线程要做的事情,需要
重写Thread里的run方法。
激活线程:创建线程对象,调用Thread的start方法。
start方法和run()方法的区别:
- run方法是一个实例方法,跟线程无关
- start是激活线程
main方法的执行本身也是一个进程,它也有一条线程,我们称为主线程。