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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微笑=.一瞬间 山林野马   /  2014-4-4 18:58  /  1175 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位好心的学长 帮忙回答下 throw和throws的区别在那里呢 一直搞不明白 请大神指点

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

5 个回复

倒序浏览
1)用throws声明的异常表示此方法不处理异常,而交给方法的调用处处理。
比如:
  1. class Math{
  2. public int div(int i,int j) throws Exception{  //方法可以不处理异常
  3. int temp=i/j;
  4. return temp;
  5.         }
  6. }

  7. public class ThrowsDemo
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 Math m=new Math();
  12.                 try{
  13.                         System.out.println("除法操作:"+m.div(10,2));   //可以看出,在主方法中添加了try...catch,异常交由主程序处理
  14.                 }catch(Exception e)
  15.                 {e.printStacktrace();
  16.                 }
  17.                         }
  18. }
复制代码


而可以使用throw直接抛出一个异常,
  1. class Math{
  2. public int div(int i,int j) throws Exception{  //方法可以不处理异常
  3. int temp=0;
  4. try{
  5. temp=i/j;                                      //如果产生异常,教给catch

  6. }catch(Exception e){                           //捕获异常
  7. throw e;
  8. }finally{
  9. System.out.println("****** div over******")

  10. }
  11. return temp;
  12.         }
  13. }

  14. public class ThrowsDemo
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 Math m=new Math();
  19.                 try{
  20.                         System.out.println("除法操作:"+m.div(10,2));
  21.                 }catch(Exception e)
  22.                 {e.printStacktrace();
  23.                 }
  24.                         }
  25. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

回复 使用道具 举报
throw抛出异常,throws声明方法抛出异常。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
throws是声明异常,写在方法后面
throw是抛出异常,写在代码里

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
  public Test() throws RepletException {
    try {
      System.out.println("Test this Project!")
    }
    catch (Exception e) {
      throw new Exception(e.toString());
    }
  }

throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
Throws 用在函数上,后面跟异常类,可以跟多个,用逗号隔开。
作用是给这个函数声明一个异常,提醒调用者这个函数运行时可能会有异常出现,在使用时需要处理
Throw用在函数内,后面跟异常对象。
作用是当出现一个情况后,编程人员可以把这个情况当作异常,将其抛出。


  1. class Demo
  2. {
  3.         int div(int a,int b) throws FuShuException
  4.         {
  5.                 if(b<0)
  6.                         throw new FuShuException("除数中出现了负数!!!");//手动通过throw抛出一个自定义异常类对象
  7.                 return a/b;
  8.         }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马