java异常的捕获及处理
异常的捕获及处理
1.try……catch……
2.throws
3.throw
4.assert 断言
First、什么是异常?
异常是导致一个程序中断的指令流,一旦出现之后程序就将立即退出。
public class ExpTest{
public static void main(String args[]){
int x = 10;
int y = 0;
System.out.println("计算开始。") ;
System.out.println("计算结果是:"+(x/y));
System.out.println("计算结束。");
}
}
程序的运行结果:
/*计算开始。
*Exception in thread "main" *java.lang.ArithmeticException: / by zero
*at ExpDemo01.main(ExpDemo01.java:6)
*/
产生了异常之后,在异常语句之后的代码将不再执行,直接退出程序。
要是程序继续进行,就需要异常语句的处理了。
Second、处理异常?
在Java中使用如下的语法进行异常的处理:
一个 try 语句之后跟上了多个 catch 语句,表示可以处理多种异常。
捕获范围小的异常要放在捕获范围大的异常之前。
大部分的异常都直接使用Exception接收即可。
try{
可能出现异常的语句;
}catch(异常类型 异常对象){
处理异常;
}catch(异常类型 异常对象){
处理异常;
}...
finally{
异常处理的统一出口;
//不管是否有异常,都执行此finally语句!
}
以算术异常为例,观察其继承的结构:
java.lang.Object
java.lang.Throwable
java.lang.Exception【程序中】
java.lang.RuntimeException【控制台抛出异常console】
java.lang.ArithmeticException
Throwable有两个子类:
Throwable:
Error:表示"JVM错误",还没有运行到程序上,所以一般不去处理。
Exception:是在"程序中"发生的异常,一般都需要进行处理。
//肯定所有的异常类的操作都可以通过Exception进行接收。
Third、异常的处理流程
a、
异常产生之后,实际上都会自动生成一个异常类的【实例化对象】,如果此时编写了异常处理语句的话,则进行异常的处理,如果没有的话,则交给 JVM 进行处理。
b、
使用了 try 捕获异常之后,将自动与 catch 中的异常类型相匹配,如果匹配成功,则表示可以使用此 catch处理异常,如果都没有匹配成功的,则不能处理。
c、
程序中不管是否出现了异常,如果存在了 finally语句,都要执行此语句的代码。
4、throws
throws关键字主要是用在方法的声明上,表示一个方法不处理异常,而交给被调用处进行处理。
在主方法上使用的话就表示一旦出现了异常之后,继续向上抛,表示由JVM进行处理了。
实际上默认情况下的所有异常都是依靠JVM进行处理的。
4、throw(少一个s)
throw关键字是在程序中"人为的抛出"一个异常对象。
throw new Exception("认为抛出的!") ;
用一个程序去证明。
public class ExpTest01{
public static void main(String args[]) {
try{
throw new Exception("认为抛出的!") ;
}catch(Exception e){
e.printStackTrace() ;
}
}
}
5、RuntimeException和Exception
1、RuntimeException:
- 抛出的异常是RuntimeException类或者是它的子类的话,那么可以不用进行异常处理的操作。
- 如果不做任何异常处理的话,则一旦出现了异常之后将交给被调用处进行处理。
2、两者的区别:
Exception必须处理,而RuntimeException可以不用处理。
6、异常处理的标准格式。
try…catch…finally、throw、throws实际上在开发中是要一起使用。
- throw直接抛出异常,无需自己处理,有程序以外的代码处理,至于什么异常开发者也不会知道,如果没有代码处理抛出的异常,程序将自动结束。throw是用在方法体内,抛出后由程序外的代码处理。throw 则是抛出了一些具体的异常——一些已知的异常,执行throw代码就是抛出异常。
- try catch可以捕获抛出的异常,并显示出来,开发者可以很明显的了解自己代码的异常。
- throws是用在异常说明之后,若存在异常,将由方法的调用者执行;
throws可能存在异常需要抛出,强调可能。
7、assert关键字(断言)
一般assert都在程序中判断某条语句一定是期望的计算结果。