例外(也叫异常):是指程序在执行过程中出现本身没有预料到的情况,导致程序错误结束。一个例外事件对应于一个例外对象,这些例外对象都对应于类Throwable及其子类。(Throwable可以分为Error异常和Exception异常)
例外一般有两种:
1、uncheck例外。这些例外编译能通过,在执行时报错。
2、check例外。编译不能通过。
例外的关键字:Exception、try、catch、finally、throw和throws。对于各个关键字分别注意以下几点:
1、Exception是Throwable的子类。
2、try引导警戒区,即可能产生例外的代码段。
3、catch引导例外控制器,即处理例外的代码段。
4、try代码段和catch代码段之间不允许有任何语句。
5、一旦try代码段发生异常,则异常后的语句将不执行,控制流程转向catch块。
6、finally块主要用来释放内存。不管程序出现异常否,finally块里的代码均要执行。
eg:在try块里有一个文件被打开,也有关闭该文件的代码,但是执行了文件打开动作后,关闭动作还没执行就发生了异常。若无finally块,则该文件始终不能关闭,一直占内存;若存在finally块,且将关闭该文件的代码放在finally块里,则会解决这种情况。
7、可以只要try块和finally块。
8、throw和throws是将例外抛出,抛给上一级处理。不同的是:throw后跟一个例外对象;throws后跟一个例外类。
eg:当有很多方法产生例外时,可以将例外抛给上一级处理即main处理,这样就不用对每个方法都分析异常了。main方法里,也可以抛出,抛给虚拟机处理。
对于例外还应注意以下几点:
1、哪个例外先发生,就先处理哪个。
2、如果例外做了处理,则程序不会崩溃,即异常块外的语句还能执行;若没做处理,则程序会崩溃,异常后的所有语句无条件终止执行。
3、RuntimeExeception类及其子类的特殊情况:这些类的例外是由系统自动抛出、自动捕获、并自动处理的。