Java异常处理-4-throws和throw的区别和finally关键字

      上一篇,我们介绍了Throws抛出异常,也使用了throw语句,这篇先来看看两者区别,然后在看看finally关键字的基本用法。

1.throw的概述

       在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,用throw把异常对象抛出。看看下面代码的throw后面跟的是一个new Exception对象。

public void setAge(int age) {
	if(age>0 && age < 150) {
		this.age = age;
	} else {
		throw new RuntimeException("年龄非法");
	}
		
}

主要throw后面抛出的是异常对象。


2.throws和throw的区别

观察下面代码,来总结下throws和throw的区别。

public void setAge(int age) throws Exception {
      if(age>0 && age < 150) {
          this.age = age;
      } else {
          throw new Exception("年龄非法");
      }
        
  }

throws

1)用在方法声明后面,跟的是异常类名。

2)可以跟多个类名,用逗号隔开

3)表示抛出异常由该方法的调用者来处理。

throw

1)在方法体内,跟的是异常对象名。

2)只能抛出一个异常对象名

3)表示抛出异常由该方法体内语句处理。


3 finally使用

1)finally的特点

--被finally控制的语句体一定会被执行

--特殊情况,在执行到finally之前,JVM退出了,例如System.exit(0)

2) finally的作用

--用来释放资源,在文件IO流和数据库操作经常使用。

3) 代码演示

package exception;

public class Demo1_Finally {
	
	public static void main(String[] args) {
		
		try {
			System.out.println(1/0);
		} catch (Exception e) {
			System.out.println("除数为零了");
		} finally {
			System.out.println("看看我是否执行了");
		}
	}

}

运行结果:

除数为零了
看看我是否执行了

然后把1/0改成10/2,然后继续测试运行代码。

5
看看我是否执行了

所以,不管是否出现了异常,在finally的代码块一定会被执行。

package exception;

public class Demo1_Finally {
	
	public static void main(String[] args) {
		
		try {
			System.out.println(10/0);
		} catch (Exception e) {
			System.out.println("除数为零了");
			System.exit(0);
		} finally {
			System.out.println("看看我是否执行了");
		}
	}

}
当执行走catch分支的时候,在里面添加了退出JVM操作,结果finally就不会被执行。



猜你喜欢

转载自blog.csdn.net/u011541946/article/details/80779471
今日推荐