java异常的基本概念和处理流程

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("结束。");//这句仍是会执行
        }
        
}

相关文章
相关标签/搜索