原文地址:http://blog.youkuaiyun.com/QLX119/article/details/74185276
java中throw与throws的区别
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。
同时:
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
下面一代码解释说明:
- package com.xing.tyy;
-
- public class Student {
- String name;
- String sex;
- int age;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) throws Exception {
-
- if (age > 12 && age < 20) {
- this.age = age;
-
- } else {
- Exception e = new Exception("你输入的年龄过大!");
- throw e;
-
- }
-
- }
-
- }
- package com.xing.tyy;
-
- import org.apache.log4j.Logger;
-
- public class test2 {
- public static Logger logger1 = Logger.getLogger("test2.class");
-
- public static void main(String[] args) {
-
- Student d = new Student();
- logger1.info("sdfsd");
-
- try {
- d.setAge(30);
-
- } catch (Exception e) {
-
-
- e.printStackTrace();
- }
-
- }
-
- }