异常的概述
Exception,在程序中能够强制编译器来处理程序执行中的发
生的并不是由程序本身所造成的错误。这个处理方法在java中就叫做异常捕获,
而这些并不是程序本身产生的错误就叫做“异常”。
基本异常
举一个抛出异常的简单样例,对于对像引用f,传给你的时候可能没有初始化。
那么在使用这个对象调用其方法前能够先对它进行检查。像这样:
if(f==null)
throws new NullPointerException();
这就是抛出了一个异常,那么在当前环境下就不必操心这个可能出现的空指针异常了。
它将在别的地方获得处理。
使用异常处理机制的优点就是异常同意我们强制程序停止执行。
并告诉我们出现了什么问题。或者强制程序处理问题,并返回稳定状态。
异常处理程序
假设要将抛出的异常进行恰当的处理,就得准备对应的处理程序。
异常处理程序紧跟在try代码块之后,以keywordcatch表示:
try{
//要尝试执行的代码
}catch(){
//处理该异常的代码
}
(关于catch语句的异常类型:假设是catch语句的异常类型是CapacityToolException的父类,
那么程序也回进入到catch语句中。)
创建自己定义异常
java中不可能将全部的异常考虑的面面俱到。
所以有必要通过自己写的异常类来处理各种可能出现的异常,
要定义异常类。必须从已有的异常类中继承,最好是选择意思相近的异常类来继承。
Java异常的传递
Java异常传递得出规则是;将宜昌传递给方法的调用者,
直接被处理掉或者到达main方法,异常传递给main方法后,
事实上就是被java平台处理掉了。
我们知道main方法就是程序的入口。
全部的方法调用都是从main方法開始的,所以一个异常最多也就是传递到main方法这里。
当一个异常在方法的代码中发生的时候,方法中后面的代码都不会被运行的。
异常的语法传递规则是:从某个方法中的某个throw语句開始,
异常将从这种方法传递到调用这种方法的地方,并按方法调用的顺序继续传递,
知道追出的方法。也就是main方法。
一场必须被传递出去或者被处理掉,否则在编译源码的时候。java编译器就会输出一个语法错误。
在程序执行的时候,假设方法的某行代码抛出了异常,那么方法之后的代码都不会执行。
7 try-catch-finally语句
try-catch-finally语句的语法结构规则例如以下:
try{
//可能发生异常的代码
}catch(异常类型1 异常引用) {
//异常处理代码
}catch(异常类型2 异常引用) {
//异常处理代码
}
……
}catch(异常类型n 异常引用) {
//异常处理代码
}finally{
//finally 语句代码块
}
该段与try-catch语句唯一不同的就是在语句的最后,多出了一个finally块,
这样的语句的作用是:不管语句块中的代码是否发生异常,不管是否有catch语句可
以与异常匹配,finally语句块中的代码都会在之后运行,也就是说,这样的语法为原来的try-catch语句
多加了一种功能,使用finally块让一段代码肯定能够被运行到。
可是,须要说明的是,final语句并不处理异常,就是说假设一个异常没有被catch、
语句处理掉。那么在这个异常被抛出到方法之前。会首先运行finally语句块,
可是在finally语句运行完之后,异常还是会被抛出去。同一时候。finally语句一定会被运行,
即使在catch语句中使用了return来结束方法,finally语句块也会被运行到。
try-finally语句
在java的异常处理机制中,try-finally语句严格来说并非来处理异常的。try-finally语句的语义能够被理解为:尝试执行某段代码,不管这段代码是否有return语句,不管是否发生异常,都须要在结束后执行finally语句代码。
来源:https://www.cnblogs.com/brucemengbm/p/6788846.html