黑马程序员技术交流社区

标题: throw和throws的区别 [打印本页]

作者: 曹春洋    时间: 2014-1-12 11:24
标题: throw和throws的区别

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();
                }
        }
}

作者: ↑↓ME→←    时间: 2014-1-12 11:30
领教啦,throws抛出异常类,throw抛出异常类对象
作者: xu6148152    时间: 2014-1-12 11:37
throw是语句抛出一个异常。
语法:throw (异常对象);
         throw e;

throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
            public void doA(int a) throws Exception1,Exception3{......}
作者: 净坛使者    时间: 2014-1-12 11:42
区别一:               throw 是语句抛出一个异常;throws 是方法抛出一个异常;                 throw语法:throw <异常对象>                 在方法声明中,添加throws子句表示该方法将抛出异常。                throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]                其中:异常类可以声明多个,用逗号分割。   区别二:            throws可以单独使用,但throw不能;   区别三:              throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获
作者: november    时间: 2014-1-12 12:03
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2