异常
异常是程序在执行过程中所产生的问题(异常:指代码能处理的问题 Exception,错误:指代码不能处理的问题 Error)
1.运行时异常,未检查异常
2.编译时异常:指编译期告诉我们调用的方法可能会抛出异常,需要我们处理,可能编译不能通过,表现形式是在异常处出现红线
编译时异常的提示:Unlined Exception Type FileNotFoundException
错误是程序员不能用代码处理的问题,往往是硬件问题,环境问题,系统问题。
异常处理:
1.预判,提前消除异常出现的条件
2.异常捕获: try--catch
3.不处理,抛出异常让别人处理: throws ,throw
捕获异常
使用关键字Try-catch-finally
当try后面接多个catch块,应该将捕获异常的子类写在前面,父类写在后面。finally:语法是不管发不发生异常都会执行finally也会在返回关键字前执行
try-catch-finally,都不能单独存在,必须先写try
抛出异常
Throwable 类
在Throwable 类中有两个方法可以用于获取抛出异常的信息 ---get Message ----PrintStackTrace
使用关键字 Throw 关键字抛出这个异常,只是在内存中产生的一个对象,并没有纳入到异常传播机制中
使用关键字 Throws 当主动抛出的是一个编译时异常的时候,必须要在编译时给本方法的调用者提出警告,所以在方法的申明部分应该有Throws内容,表明该方法可能发生异常
throw和throws的辨析
1.throw和throws 都是关键字都属于异常处理部分的
2.throw是写在方法体中的,后面跟的时一个异常对象
throws是写在方法的声明的最后的,后面跟的是一个或多个异常类
3.当运行到throw这句代码时,就会真正发生抛出以一个异常对象
throws是在编译期警告本方法的调用者有可能会发还是呢个哪些异常
4.当一个方法体中有thorw语句。不一定会有throws,除非throws后面跟的时编译时异常,那就必须写throws
自定义异常
步骤:第一步:创建一个类继承与Exception
第二步:添加构造方法和普通方法
第三步:在一个方法中抛出异常
第四步:在别一个方法中捕获并处理异常
注意:
1.自定义异常一定要继承Exception
2.自定义异常至少要有两个带参构造,一个是把其他异常类型转换成自定义异常,二个是操作非JVM主动抛出的异常
3.可以给自定义异常提供扩展方法