首页 > 试题广场 >

throw和throws有什么区别?

[问答题]
throw和throws有什么区别?
推荐
1、Throw用于方法内部,Throws用于方法声明上
2、Throw后跟异常对象,Throws后跟异常类型
3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型
编辑于 2018-09-26 09:22:16 回复(12)
1. Throw用于抛出异常对象,后面跟的时异常对象。是语句抛出一个异常。多用在函数内。
语法:throw(异常对象)
           throw e;
2.Throws是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)
语法:修饰符 返回值类型 方法名  参数类型  throws异常类
        public void test throws Exception1,Exception2(){}
发表于 2016-03-27 22:42:57 回复(0)

系统自动抛出的异常
所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。

 

语句抛出的异常
用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。


throw是语句抛出一个异常。
语法:throw (异常对象);
         throw e;

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

 

举例:

throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。

如: void doA(int a) throws Exception1,Exception3{
           try{
                 ......

           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("出错了!");
           }
           if(a!=b)
              throw new  Exception3("自定义异常");
}


代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。
如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

 

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

 

throws主要是声明这个方***抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

 

throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。

 

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

发表于 2017-04-13 10:51:36 回复(1)
Throw 用于抛出异常对象,后面跟的是异常对象,throw多用在函数内,这是检查异常。 Throws 用于抛出异常类,后面跟的是异常类名,可以跟多个,用逗号隔开,throws多用在函数上,这是运行时异常。通常情况,函数内如果有throw,抛出异常对象,函数内部并没有进行处理,那么函数上一定要声明,否则编译失败。声明的原因是需要调用者对该异常进行处理。运行时异常如果在函数内被抛出,在函数上不需要声明,这是因为该异常不需要调用者处理,运行时异常发生时,已经无法再让程序执行下去,直接让程序停止,进行代码的修正。
编辑于 2017-01-17 23:58:46 回复(0)
1、Throw用于方法内部,Throws用于方法声明上
2、Throw后跟异常对象,Throws后跟异常类型
3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型

1.   Throw用于抛出异常对象,后面跟的时异常对象。是语句抛出一个异常。多用在函数内。  
语法:throw(异常对象)
           throw e;
2.Throws是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)
语法:修饰符 返回值类型 方法名  参数类型  throws异常类
        public void test throws Exception1,Exception2(){}
发表于 2017-02-21 10:35:59 回复(0)

throw用在方法内部,可以抛出一个异常对象。throws用在方法声明,可以抛出多个异常类。

发表于 2020-03-07 21:08:14 回复(0)
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 href="http://lib.csdn.net/base/javase" target="_blank">Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。 语句抛出的异常 用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。 throw是语句抛出一个异常。 语法:throw (异常对象); throw e; throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常) 语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......} public void doA(int a) throws Exception1,Exception3{......} 举例: throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。 throw则是明确了这个地方要抛出这个异常。 如: void doA(int a) throws Exception1,Exception3{ try{ ...... }catch(Exception1 e){ throw e; }catch(Exception2 e){ System.out.println("出错了!"); } if(a!=b) throw new Exception3("自定义异常"); } 代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。 如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。 如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。 而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。 throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。 throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。 throws主要是声明这个方***抛出这种类型的异常,使它的调用者知道要捕获这个异常。 throw是具体向外抛异常的动作,所以它是抛出一个异常实例。 throws说明你有那个可能,倾向。 throw的话,那就是你把那个倾向变成真实的了。 同时: 1、throws出现在方法函数头;而throw出现在函数体。 2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。 3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
发表于 2021-08-15 10:31:10 回复(0)
thow是动词,表示抛出异常的这个动作,也就是在方法内抛出异常的行为。
thows是名词,表示这个方法应该抛出异常,也就是声明在方法上,说明该方法需要抛出异常的声明,他所声明的是抛出异常的类型。
发表于 2020-06-19 08:41:22 回复(0)
<p>throw写在方法内,必抛的方法异常。throws写在方法声明后面,根据条件抛出异常。</p>
发表于 2020-05-27 05:40:27 回复(0)

throw 是在方法内部new出来一个异常对象

throws是在方法声明上抛出一个或多个异常类

发表于 2020-03-04 12:31:27 回复(0)
throw是作用在方法内,抛出异常 throws作用在方法声明处,说明该方法可能出现哪些异常
发表于 2019-11-23 01:41:40 回复(0)
…简单说 throws是接口 不需要自己处理异常 只需要抛出异常类型 throw是类 需要自己try catch处理异常 并且需要明确的知道异常是什么…
发表于 2019-07-19 13:34:41 回复(0)
throws抛出可能存在的异常,让使用此方法的对象去处理 throw抛出接下来创建的异常,让此方法中的catch去处理
发表于 2019-07-14 22:00:20 回复(0)
1、Throw用于方法内部,Throws用于方法声明上 2、Throw后跟异常对象,Throws后跟异常类型 3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型
发表于 2019-04-30 22:22:59 回复(0)
1、Throw用于方法内部,Throws用于方法声明上
2、Throw后跟异常对象,Throws后跟异常类型
3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型
发表于 2019-04-27 19:50:59 回复(0)
1、Throw用于方法内部,Throws用于方法声明上2、Throw后跟异常对象,Throws后跟异常类型3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型
发表于 2019-04-26 23:06:45 回复(0)
1、Throw用于方法内部,Throws用于方法声明上 2、Throw后跟异常对象,Throws后跟异常类型 3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型
发表于 2019-04-26 23:00:05 回复(0)
throw用于方法内部,throws用于方法声明
编辑于 2019-04-26 21:43:11 回复(0)
throws、throw:这是用于抛出异常,区别在于throw是在语句中抛出、throws是在方法体上抛出,可以抛出多个,用逗号隔开。
发表于 2019-04-25 21:24:37 回复(0)
throw用于方法内部,throws用于方法上。 throw后面跟异常对象,throws后面跟异常类型。 throw后面只能跟一个异常对象,throws后面可以跟多个异常类型
编辑于 2019-04-25 19:39:38 回复(0)

throws用于方法声明,说明该方法可能抛出的异常,会面可接多个异常类型

throw在方法内部,相当于new了一个异常,并且抛出去。后面只能接一个异常类型。

发表于 2019-04-06 08:58:35 回复(0)