异常分类:异常:(Exception)---编译时异常:在编译器在编译期是告诉我们我们抛出的方法会有某个或者某几个异常需要我们处理,否则编译不能通过。表现为;编译时红线下显示(Unhandled exception);又被叫做---检查异常;
---运行时异常:又叫做---未检查异常;是在运行时发生的;
错误:(Error)---错误。指程序员不能用代码解决的问题,往往是硬件问题、环境问题、或者系统问题;
方法结束,没有返回值,发生异常强制结束;
这就是强制结束;
Throwable类;的两个方法可以用于获取抛出异常的信息;
—GetMessage
—printStackTrace
异常处理:1:预判,提前消除异常出现的条件;
2:异常捕获;异常处理机制(Try - Catch);
Try{ }catch(异常 ){ }
Try中如果发生异常就直接去catch快中顺序检查,匹配后进入;在检查过程中要注意匹配异常很重要;
当Try块 后面接多个catch块的时候应该将父类的catch块放后面,子类的catch块放前面;
修改ATM机器;
Final---最终的,不变的;形容类那么此类叫最终类;形容方法,该方法不能重写;
Finalnze---Objct方法;被Gc调用;
Finally---指不管是否发生异常都必须要执行的代码;
一般写在最后一个catch块的后面;在Finally块中一般放资源清理。通道的关闭动作,不管是Break,Continue,return.都无法制止他被执行;Finally在它们之前执行;在已知中只有System.excip可以结束他的运行;
(1: try chach finally 三个是一个整体;
2:try 后面加chach或者finally都可以;
3:抛出异常---业务异常:throw:使用他抛出这个异常对象;(运行时异常)
使用方式 throw + new +异常对象;
throws:当主动抛出的是一个非运行时异常的时候,必须在编译区,必须给调用者提出警告,所以在方法申明部分,应该有throws内容,表明本方法可能有异常。
现在才是一个完整的方法申明:访问修饰符 + 可选修饰符 +返回修饰符+返回类型+方法名 (形参列表)+throws +抛出的异常名;
throw和throws的辨析:
1:throw和throws都是关键字,都是属于异常处理部分的;
2:throw是写在方法体当中的,后面跟的是一个或者多个异常类;
3:当执行到throws这句代码的时候,就会真正发生抛出一个异常对象的动作;throws是在编译期间警告本方法的调用者,有可能会发生那些类型的异常。
4:当一个方法体当中有throw语句,不一定有throws,除非throw后面跟的是编译时异常,那就必须写throws。(最好在main方法前解决异常)
自定义异常步骤:
1创建类继承于Excption。2:添加构造方法和普通方法。
3:在一个方法中抛出异常。4:在另一个方法中捕获并处理异常三层架构:1表示层的类。2业务层的类。3数据访问类(持久层)
1: 自定义异常一定要继承exception
2:自定义异常至少要有两个构造,一个带异常参,一个带字符串参,前者用于把其他异常类性转换为自定义异常,后者用于操作非JVM主动爬出的业务异常(比如:工资为负);
3:可以给自定义异常提供扩展方法;
方法