黑马程序员技术交流社区

标题: )throw和throws的用法和区别? [打印本页]

作者: 守株人    时间: 2015-6-8 21:57
标题: )throw和throws的用法和区别?
throw和throws在处理异常时怎么用啊
作者: liya7907    时间: 2015-6-8 22:04
这个问题问的好:
给出以下答案:
throw和throws的用法和区别?
        A:throw
                用法:用在方法内部,后面跟的是异常对象名称。
                区别:用throw抛出了编译时期异常,方法上面必须用throws抛出。
               用throw抛出了运行时期异常,方法上面可以不用throws抛出。
                B:throws
                        用法:用在方法声明上,后面跟的是异常类名。
                        区别:用throws在方法上声明了异常,内部可以没有throw

作者: 半月    时间: 2015-6-8 22:06
throw 抛出异常对象
throws 声明你所抛出的异常

在程序中你可以自己设计出现某种情况就抛异常,
然后在抛出异常的方法上声明就可以了
作者: 小黑啊    时间: 2015-6-8 23:16
throws是声明异常,写在方法上
throw是抛出异常,写在方法内
作者: 城北一直晴。    时间: 2015-6-9 00:04
二楼回答的很好!
作者: 开弓没有回头箭    时间: 2015-6-9 08:45
throw是在方法过程中抛异常,抛的是异常对象,throws则是在方法内有throw异常或方法内方法throws异常没有处理,则该方法后要throws异常,抛出对象为异常类名
作者: 李俊超    时间: 2015-6-9 08:56
一楼回答的很详细了:throw在方法抛出处理异常,throws在方法声明上抛出异常。个人理解:前者是在自己方法内解决。后者是交给别人解决。
作者: meng12    时间: 2015-6-9 09:07
throw定义在函数内,throws定义在函数外
作者: 途中ms前进    时间: 2015-6-9 11:25
t补充一点throws使用在函数上,后面跟的异常类可以跟多个用逗号隔开。
作者: 路途遥远    时间: 2015-6-9 14:02
1. Throws 用来声明一个Exception,Throw是关键子抛出一个具体的实例Exception
2. 从语法上说Throws后面是类名,Throw后面是对象
3. Throws用在方法声明处也就是方法名后面,Throw用在方法体里
  1. ....
  2. static{
  3. try {
  4. throw new Exception("Something went wrong!!");
  5. } catch (Exception exp) {
  6. System.out.println("Error: "+exp.getMessage());
  7. }
  8. }
  9. ....
复制代码
  1. public void sample() throws ArithmeticException{
  2. //Statements

  3. .....

  4. //if (Condition : There is an error)
  5. ArithmeticException exp = new ArithmeticException();
  6. throw exp;
  7. ...
  8. }
复制代码


4. Throws可以抛出多个Exception,Throw一次只能抛一个
  1. throw new ArithmeticException("An integer should not be divided by zero!!")
  2. throw new IOException("Connection failed!!")
复制代码
  1. throws IOException, ArithmeticException, NullPointerException,
  2. ArrayIndexOutOfBoundsException
复制代码



作者: 杜弦东.    时间: 2015-6-9 14:59
有很明显的区别。首先,是使用的位置,throws 只能跟在方法名和括号的后面,而 throw 只能出现在方法体内。其次,throws 是一个声明(它声明这里可能出现异常,但未必一定出现),而 throw 是一个动作(它抛出也可以说它产生一个异常出现,只要执行到了这个关键字,异常必定出现)。你可能 throws 用的比较熟悉,throw 还不太知道怎么用。我再说具体一点的。当你使用 throw 抛出(产生)一个异常的时候,如果方法用 throws 抛弃(抛开,这里不理了)异常,那么这个异常将被抛到了调用这个方法的地方去。如果这个方法没有用 throws 抛弃异常,那么就需要使用 try...catch 来捕捉异常了。相信你能明白这里所谓的“产生”跟“抛弃”的区别了。产生,就是异常出现的地方。抛弃,就是让异常通过这里去到别的地方,是异常经过的地方。如果你还不明白 throw 具体有什么用,我再举一个简单的例子。例如你做一个程序,需要输入月份的,如果输入了 13 ,那就是无效数据,那这时候你有两种处理方式,第一种就是使用判断语句判断,然后提示;第二种就是抛出一个异常,让上层调用的方法去处理这个输入错误。如果你不明白这种做法的好处,那没关系,以后程序做多了你就会发现的,现在至起码你知道了它有这种用法。
作者: xiaodong    时间: 2015-6-9 22:13
学习学习!
作者: 十五号的人生    时间: 2015-6-9 22:15
1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。




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