异常信息内容
1.打印错误信息
2.打印异常类
3.打印错误发生的位置
4.将你的程序停止
异常类
- Throwable(所有异常的父类)
- Error(数据库崩溃 系统崩溃)
- Exception(异常类)
- RuntiomeException(运行时异常)
异常处理方式
使用try…catch…finally自己处理
try:存放可能发生异常的代码
catch:匹配异常类的对象
finally:异常匹配完毕后,肯定会执行的代码
public static void main(String[] args) {
try {
int num = 10/0;
System.out.println(num);
return;
} catch (Exception e) {
System.out.println("你除零了");
} finally {
System.out.println("你猜我执行了吗");
}
}
注意:
1.程序不会停止
2.catch匹配成功后,执行括号中的语句
3.执行括号中语句执行完毕,程序继续运行
4.可以用多个catch进行匹配
5.匹配时类要从小到大依次书写
6.无论发生异常与否,finally语句一定会被执行(用于关闭数据库和流资源)
- 交给上级处理
在方法中用关键词throw抛出异常,谁调用该方法就把异常抛给谁,抛出异常的方法需要在方法上标识一下,使用关键词throws标识方法有异常.
public void setAge(int age) throws Exception{
if (age > 0 && age < 120) {
this.age = age;
}else {
Exception e = new Exception();
throw e;
}
}
throw和throws区别
写法:
throw 后面写的是抛出的异常对象
throws 后面写的是异常类的类名
位置:
throw 写在方法中
throws 写在方法上
作用:
throw 抛出一个异常对象
throws 标识方法携带一个异常
异常的分类
1.运行时异常(需要将程序停下来,修改错误)
例如: 空指针 越界
特点:
a.不强制处理
b.一旦发生运行时异常,程序会立即停止(不处理的情况下)
2.编译时异常(有可能发生错误,提前为这个错误做准备)
特点:系统强制你对编译时异常进行处理
继承中的异常(多线程)
1.子类重写父类带异常方法,可以选择抛不抛出异常
2.父类方法没有抛出异常时,子类重写方法中不能抛出异常,只能选择自己处理这个异常