一.异常的概念:java
程序在运行时,发生了咱们没有预测的状况,它阻止了程序按照咱们预期效果执行!数据库
二.全部异常和错误的父类--(Throwable)jvm
Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类的()直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别.JDK中內建了一些经常使用的异常类,咱们 也能够自定义异常.函数
1.Excetion--异常指针
(1).运行时异常(RuntimeExction):在程序运行期间产生的异常.对象
01:ArithmeticException--数学异常继承
02:InputMismatchException--输入类型不匹配异常文档
03:NullPointException--空指针异常.数学
(2).受查异常(checked Excetion):在程序编译期间产生的异常.it
01:IOException--.IO异常
02:EOFException--.意外获取文件尾端,获取失败
03:FileNotFoundException--文件不存在异常
04:ClassNotFoundException--类不存在异常.
2.Error--错误
(1):VirtualMachineError.
01:OutOMemoryError
02:StactOverFlowError.
(2):AWTError:
三.try..catch..finally
1.try的使用
(1):try代码块不能单独使用,必须和catch或者finally中的一个一块儿使用.
(2):可能发生异常的代码.
(3):若是try代码块中不发生异常,有finally的状况下,先执行finally,以后执行finally以后的代码.
若是try代码块中发生异常,先去catch中匹配异常,若是匹配成功,执行对应的catch.
不然执行finally,而后程序终止!!!
2.catch的使用
(1):每个catch代码块都是用于捕获并处理一个特定的异常或者是这个异常的子类!
(2):catch(ArithmeticException ex)定义了异常类型
(3):能够同时出现多个,可是不能重复
(4):多个catch代码块中的异常类型书写顺序必须是从小到大
(5):咱们的异常会从多个catch代码块中找到一个最早匹配的,而后交给这个代码块处理
(6):每一个catch代码块中的变量都是独立的,别的代码块不能访问.
(7):若是全部的catch代码块都不匹配,先去执行finally,以后终止程序.
(8):若是try中没有发生异常,则全部的catch块被匹配.
(9):java1.7的版本中支持多个异常声明在一个catch中.
3.finally的使用:
(1):不管发生什么异常,finally都会执行
(2)若是try中没有异常,可是有return,这时候会先执行finally以后执行return.
(3)若是代码中出现System.exit(int status),那么不会执行finally
System,exit(0),正常退出.
System.exit(非0):非正常退出.
(4)作一些程序的清理工做,关闭流,释放数据库的链接.
四:throw throws
1:throw
(1)抛出的异常类型能够是Exception或者其子类!
(2)一条throw语句只能抛出一个异常对象.
(3)throw只能出如今方法体内
(4)对于throw抛出的异常咱们有两种处理方式.
01:try..catch..finally
02.throws
2.throws
(1)throws声明在方法的名称以后.
(2)throws能够声明多个,每一个异常之间使用逗号隔开,
(3)throws声明异常,表示当前方法可能出现异常,方法的调用者来处理异常
(4)若是在主函数main中舒勇throws,则由咱们的jvm来处理
五.异常链.
1什么是异常链?
(1)异常链是指将捕获的异常包装进一个新的异常中,新异常中记录了原始异常的信息,并从新抛出异常处理方式.
六:自定义异常:
1异常类必须是Throwable的子类
2:定义运行异常 继承RuntimeException
3.定义受查异常 继承Exception.
七:异常的使用原则:
1.异常只能用于非正常状况.
2:为异常提供说明文档.
3.尽量的避免异常,特别是运行时异常
4:保持异常的原子性.
5.避免过于庞大的try代码块.
6:在catch中制定具体的异常类型
7:不要在catch块中忽略捕获的异常.