JAVA笔记(十三)--Java异常处理
1.异常:
a.why: 程序中执行代码会发生各种情况,导致程序开发者需要将大量精力放入到判定处理上?-优化-异常处理
b.what: 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
c.how: 异常处理:Java编程语言使用异常处理机制为程序提供了错误处理的能力
2.异常处理:
a.关键字:
try: 异常执行代码
catch:捕获异常
finally: 最终执行
throws: 声明异常
throw: 抛出异常
b.how1:
try{
//执行代码--可能含有异常
}catch(异常类型 e){
//异常处理相关操作
}
问题:如果执行代码中含有多种异常,需要分别处理,如何操作?
c.how2:
try{
//执行代码
}catch(异常类型 e){
//异常处理相关操作
}finally{
//最终执行;
}
后续处理
finally 中的内容不管程序是否出现异常都需要执行的内容
eg:
IO流需要最终关闭流/数据库连接使用完毕需要关闭连接
(***): 不管是否有异常都会执行,即使使用return强制结束也会执行,唯一不执行情况 System.exit(status);
d.how3:
try{
//执行代码
}catch(异常类型1 e1){
//异常处理
}catch(异常类型2 e2){
//异常处理
}
...
finally{
//最终执行代码
}
(***):排列catch 语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句
f.throws: 声明异常:
1).语法:
修饰符 返回值类型 方法名(参数列表) throws 异常类型{
//执行内容
}
2).处理:
方式一: 后续调用方法继续声明,后续继续处理,如果由main声明的异常由java虚拟机处理
方式二: 后续调用方法直接try...catch处理
3).注意事项:
前面声明的异常的方法中该异常类型指定必须比后续调用或声明范围小或其相同;
声明异常时可以同时声明多个异常;
g.throw:抛出异常:
1).语法:
throw new Exception(); ---创建一个需要的异常类型对象
2).后续操作:
抛出异常以后需要后续处理异常;
3.异常结构体系:
异常可以避免,错误无法避免
问题:
系统的异常体系无法满足我们需求?
4.补充:自定义异常:
a.定义异常类--继承Exception/Throwable/RuntimeException...
b.重写类方法和添加新功能
c.抛出自定义异常