异常的定义
在《java编程思想》中这样定义异常:阻止当前方法或作用域执行的问题。也可以这样说,异常就是某种意义
上的错误,就是问题,它可能会导致程序失败。
异常的分类
1、Throwable:它是java语言中所有错误或异常的超类。它有两个子类:Error和Exception。
2、Error:用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到不能处理了,
所以听之任之就行了,不用管它。例如:VirtualMachineError,当java虚拟机崩溃或用尽了它继续操作所需的资源
时,抛出该错误。就算这个错误存在,也不用处理,直接交给JVM吧,没有比它更专业的了。
3、Exception:他指出了合理的应用程序想要捕获的条件。Exception又分为两类:CheckedException和
UncheckedException(通常也叫RuntimeException)。二者的主要区别是:CheckedException需要用try...catch...
显示捕获,而UncheckedException不需要捕获。
捕获异常
1、try是尝试运程代码块,如果有异常会被随后的catch捕获,异常发生以后代码不执行。
2、catch代码块是异常处理代码,需要提供合理的处理。
1)异常的处理与具体的业务逻辑有关
2)可以写多个catch处理一系列异常,但是要注意:异常的大小关系,大类型的放到后面处理。
3、有的时候直接catch(Exception)粗粒度处理异常,代码简洁,语义含糊,根据业务逻辑适当选用。
4、finally代码块,不管是否出现异常,总会执行的代码块。
1)finally常用来处理现场的清理。
5、处理异常基本原则:能够底层处理的尽量底层处理,但是如果不能处理,必须抛出到调用者。不应该简单
的抛弃。
6、异常捕获再抛出,是一种把底层异常进行封装,转换为另外一种异常类型。
7、建议在捕获到异常时候使用e.printStackTrace(),打印到控制台。
1)输出内容是:出现异常时候的方法调用堆栈。
2)一般情况下,凡是捕获异常代码都输出e.printStackTrace()。