全国咨询/投诉热线:400-618-9090

首页技术文章正文

Java程序异常处理之try…catch和finally[黑马程序员]

更新时间:2019-09-17 来源:黑马程序员 浏览量:

在java程序运行中,如果发成异常,程序立即终止,无法继续向下执行。为了解决这样的问题,Java中提供了一种对异常进行处理的方式——异常捕获。异常捕获通常使用try…catch语句,具体语法格式如下:

try{

    //程序代码块

} catch(ExceptionType (Exception 类及其子类) e) {

    //对 ExceptionType的处理

}

 

  

1575881083091_java-异常-处理.jpg


其中在try代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码。当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。catch代码块需要一个参数指明它所能够接收的异常类型,这个参数的类型必须是 Exception类或其子类。

public class Example{

    public static void main(String [] args){

            //下面的代码定义了一个 try catch语句用于捕获异常

            try{

                int result= divide(4,0);    //调用 divide()方法

                System.out.println(result);

            } catch (Exception e) {     //对异常进行处理

          System.out.println("捕获的异常信息为:"+e.getMessage());

            }

            System.out.printIn("程序继续向下执行……”);

        }

      //下面的方法实现了两个整数相除

    public static divide (int x,int y) {

        int result=X / y;    //定义一个变量result记录两个数相乘的结果

        return result;      //将结果返回

    }

}


 

运行结果为:

D:\cn\itcast\chapter04>java Example
捕获的异常信息为:/ by zero
程序继续向下执行…

 

上面案例中,对可能发生异常的代码用try…catch语句进行了处理。在try代码块中发生被0除异常,程序会转而执行catch中的代码,通过调用Exception对象的getMessage()方法,返回异常信息“/by zero”。catch代码块对异常处理完毕后,程序仍会向下执行,而不会异常终止。


需要注意的是,在try代码块中,发生异常语句后面的代码是不会被执行的,如本例中第6行代码的打印语句就没有执行。

在程序中,有时候我们希望有些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally代码块,接下来对演示一下finally代码块的用法。

public class Example{

    public static void main (String[] args) {

       //下面的代码定义了一个try… catch…fina1ly语句用于获异常

       try {

          int result= divide(4,0);  //调用 divide()方法

          System.out.println(result);

       } catch (Exception e){        //对捕获到的异常进行处理

        System.out.println(“捕获的异常信息为:”+e.getMessage());

        return;     //用于结束当前语句

       } finally {

        System.out.println("进人finally代码块”);

          }

      System.out.println("程序继续向下执行……”);

    }

      //下面的方法实现了两个整数相除

    public static int divide (int x, int y){

       int result=x / y; //定义一个变量result记录两个数相除的结果

       return result;   //将结果返回

    }

}

 

运行结果为:
D:\cn\itcast\chapter04>java Example
捕获的异常信息为:/ by zero
进入finally代码块

 
在上面例子中catch代码块中增加了一个return语句,用于结束当前方法,此时程序第13行代码就不会执行了,而 finally中的代码仍会执行,并不会被 return语句所影响,也就是说不论程序是发生异常还是使用 retur语句结束, finally中的语句都会执行,正是由于这种特殊性,在程序设计时,经常会在try… catch后使用 finally代码块来完成必须做的事情,例如释放系统资源。

需要注意的是,finally中的代码块有一种情况下是不会执行的,那就是在try…catch中执行了 System.exit(0)语句。System.exit(0)表示退出当前的Java虚拟机,Java虚拟机停止了,任何代码都不能再执行了。

以上我们介绍了,java异常处理的方法try…catch和finally 希望对您有所帮助,如果想系统学习java,请点击页面咨询按钮,了解黑马程序员java培训课程详情。

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名