黑马程序员技术交流社区

标题: 关于throw和throws [打印本页]

作者: Running    时间: 2014-6-19 23:17
标题: 关于throw和throws
throw和throws这两个应该不相同吧,他们有什么区别,我一直分不清楚。

作者: sgs_gzy    时间: 2014-6-19 23:27
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
作者: nxp1986    时间: 2014-6-20 00:08
同求这个问题  也是刚学习到这里
作者: cat73    时间: 2014-6-20 00:21
一个修饰方法 用于告诉调用者这个方法可能抛出什么异常
一个用于抛出异常
作者: Alan_Kwan    时间: 2014-6-20 01:36
个人觉得一个是声明,一个是实际抛出。
throws是声明会抛出XX异常
throw是抛出异常
作者: 陈鹏83    时间: 2014-6-20 08:34
1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。

2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。
作者: 阿布Yocan    时间: 2014-6-20 11:55
throw 放在函数内,抛出异常对象
throws 反正函数上,抛出异常类
作者: 姿_`态    时间: 2014-6-20 13:42
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使用在函数内,后面跟异常对象
*/




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