1、异常的基本概念java
在java中把致使程序中断运行的状况分为两种,一种就是异常,而另一种叫作错误。全部异常的基类是Exception,错误的基类是Error。Exception是在java程序中能够编码进行控制的,具备可编程性,而Error是指Java运行时系统来显示与运行时系统自己有关的错误,Error对于程序员来讲是灾难性的,程序没法控制,好比jvm堆栈溢出错误,操做系统分配内存错误等。无论是Exception仍是Error,他们的共同父类是java.lang.Throwable(可抛出的) 类。程序员
异常是指在程序运行期可能出现的非正常状况,这些状况将致使程序出错,这种出错不一样于代码编写错误或程序算法出错,代码编写错误没法完成编译,而程序算法出错计算将取得错误的结果。程序出现异常时,缺省会直接形成程序的中断运行,提早预知这种异常的可能性能够补充异常处理的逻辑,从这个角度出发,异常也是一种行之有效的逻辑处理机制,在程序中声明异常或主动抛出异常也很常见。算法
简而言之,为了提升程序的健壮性,异常须要由程序员处理。编程
2、异常的做用和处理流程jvm
一、何时须要捕获异常编码
咱们先看看下面的代码:spa
public class Cal { public int div(int a, int b) { int result = a / b; return result; } public static void main(String[] args) { Cal cal=new Cal(); int result=cal.div(10, 2); System.out.println("结果:"+result); } }
在这里咱们设计了Cal类和它的div方法,用于计算两个数的商,在main方法中咱们调用这个方法,能够正常的输出:结果:5;可是若是用户用下面的代码调用(注意:除数为0。)操作系统
public static void main(String[] args) { Cal cal=new Cal(); int result=cal.div(10, 0); System.out.println("结果:"+result); }
程序的语法是没有问题的,可是程序确没有能正常显示结果,控制台输出以下:设计
程序由于异常而终止,致使程序并无输出,这个异常应该由程序员显示捕获,以调程序的健壮性。code
二、处理流程和关键字介绍
异常处理主要使用的关键字是:try、catch、finaly、throw、throws。其功能以下所示:
由上图可知try、catch、finally经常组合使用,finally是可选的,可是try和catch必须一块儿使用。其执行流程以下图所示:
具体语法格式是:
try{
可能出现异常的代码
}catch(异常类 对象){
出现异常后的处理,若是没有出现异常,这里是不会进入的。
}finally{
无论有没有异常都会在最后执行的代码。
}
那么修改上面的main方法。先看看没有异常时候的输出。代码以下:
public static void main(String[] args) { Cal cal=new Cal(); try{ int result=cal.div(10, 2); System.out.println("结果:"+result); }catch (Exception e) { System.out.println("发生异常了。"); }finally{ System.out.println("结束。"); } }
程序并无发生异常,因此catch的后面的语句块没有进入了,控制台输出以下图:
修改一下main方法,使除数为0。
public static void main(String[] args) { Cal cal=new Cal(); try{ int result=cal.div(10, 0);//这一句发生了异常,后面的代码就不会 System.out.println("结果:"+result);//这句没有执行 }catch (Exception e) { System.out.println("发生异常了。");//进入了异常处理 }finally{ System.out.println("结束。");//这句仍是会执行 } }