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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Running 中级黑马   /  2014-6-19 23:17  /  1256 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

throw和throws这两个应该不相同吧,他们有什么区别,我一直分不清楚。

7 个回复

倒序浏览
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
同求这个问题  也是刚学习到这里
回复 使用道具 举报
cat73 黑马帝 2014-6-20 00:21:12
板凳
一个修饰方法 用于告诉调用者这个方法可能抛出什么异常
一个用于抛出异常
回复 使用道具 举报
个人觉得一个是声明,一个是实际抛出。
throws是声明会抛出XX异常
throw是抛出异常
回复 使用道具 举报
1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。

2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。
回复 使用道具 举报
throw 放在函数内,抛出异常对象
throws 反正函数上,抛出异常类
回复 使用道具 举报
class  Test
{
        public static void main(String[] args)
        {
                Demo1 d1 = new Demo1();
                Demo2 d2 = new Demo2();
                Demo3 d3 = new Demo3();
                d1.div(4,2);
                d2.div(4,0);
                d3.div(4,0);

        }
}
class Demo1
{
        private int a,b;
        int div(int a,int b)//throws Exception//用于声明函数有可能会出现异常,调用者要么抛,要么try
        {   
                this.a=a;
                this.b=b;

                return a/b;
        }
}
class Demo2
{
        private int a,b;
    int div(int a,int b)
        {
                this.a=a;
                this.b=b;
                if(b==0)
                {
                        throw new RuntimeException();//抛出运行时异常,函数上可以不声明,就是让程序停下来我们修改。
        }
                return a/b;
        }
}
class Demo3
{
        private int a,b;
        int div(int a,int b)throws Exception
        {   
                this.a=a;
                this.b=b;
                if(b==0)
                {
                        throw new Exception();//抛出Exception异常,函数上一定要声明,调用者要么抛,要么try
                }
                return a/b;
        }
}
/*
对于非RuntimeExcepton,如果在函数内抛出了异常throw new Exception,那么在函数上必须声明,
声明方式throws Exception,那么这个函数的调用者要么抛要么try、这是编译时异常。
对于RuntimeExcepton,如果在函数内抛出了异常throw new Exception,那么在函数不必须声明,
,这个错误,是由于程序使用者,乱传参数造成的,就是要让程序停下来,修改,这是运行时异常

throws使用在函数上,后面跟异常类,可以跟多个,用逗号隔开
throw使用在函数内,后面跟异常对象
*/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马