A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹春洋 中级黑马   /  2014-1-12 11:24  /  1693 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1.作用不同:throw用于程序员自行产生并抛出异常,throws用于声明在该方法内抛出了异常。
2.使用的位置不同:throw位于方法体内部,可以作为单独语句使用。throws必须跟在方法参数列表的后面,不能单独使用。
3.内容不同:throw抛出一个异常对象,而且只能是一个。throws后面跟异常类,而且可以跟多个异常类。

例子:
public class Person {
        private String name = "";// 姓名
        private int age = 0;// 年龄
        private String sex = "男";// 性别
        public void setSex(String sex) throws Exception {
                if ("男".equals(sex) || "女".equals(sex))
                        this.sex = sex;
                else {
                        //抛出异常
                        throw new Exception("性别必须是“男”或者“女”!");
                }
        }
        public void print() {
                System.out.println(this.name + "(" + this.sex
                                + "," + this.age + "岁)");
        }
}



public class Test {
        public static void main(String[] args) {
                Person person = new Person();
                //捕获异常
                try {
                        person.setSex("Male");
                        person.print();
                } catch (Exception e) {                       
                        e.printStackTrace();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
领教啦,throws抛出异常类,throw抛出异常类对象
回复 使用道具 举报
throw是语句抛出一个异常。
语法:throw (异常对象);
         throw e;

throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
            public void doA(int a) throws Exception1,Exception3{......}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
区别一:               throw 是语句抛出一个异常;throws 是方法抛出一个异常;                 throw语法:throw <异常对象>                 在方法声明中,添加throws子句表示该方法将抛出异常。                throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]                其中:异常类可以声明多个,用逗号分割。   区别二:            throws可以单独使用,但throw不能;   区别三:              throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马