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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 守株人 中级黑马   /  2015-6-8 21:57  /  593 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

throw和throws在处理异常时怎么用啊

12 个回复

倒序浏览
这个问题问的好:
给出以下答案:
throw和throws的用法和区别?
        A:throw
                用法:用在方法内部,后面跟的是异常对象名称。
                区别:用throw抛出了编译时期异常,方法上面必须用throws抛出。
               用throw抛出了运行时期异常,方法上面可以不用throws抛出。
                B:throws
                        用法:用在方法声明上,后面跟的是异常类名。
                        区别:用throws在方法上声明了异常,内部可以没有throw
回复 使用道具 举报
throw 抛出异常对象
throws 声明你所抛出的异常

在程序中你可以自己设计出现某种情况就抛异常,
然后在抛出异常的方法上声明就可以了
回复 使用道具 举报
throws是声明异常,写在方法上
throw是抛出异常,写在方法内
回复 使用道具 举报
二楼回答的很好!
回复 使用道具 举报
throw是在方法过程中抛异常,抛的是异常对象,throws则是在方法内有throw异常或方法内方法throws异常没有处理,则该方法后要throws异常,抛出对象为异常类名
回复 使用道具 举报
一楼回答的很详细了:throw在方法抛出处理异常,throws在方法声明上抛出异常。个人理解:前者是在自己方法内解决。后者是交给别人解决。
回复 使用道具 举报
throw定义在函数内,throws定义在函数外
回复 使用道具 举报
t补充一点throws使用在函数上,后面跟的异常类可以跟多个用逗号隔开。
回复 使用道具 举报
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
复制代码


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