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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小丑 中级黑马   /  2013-2-18 20:44  /  1507 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解指教:throw 与 throws的区别与联系
对于throw 与 throws的有些区别是显而易见,比如
throw 是语句抛出一个异常;throws 是方法抛出一个异常;
throw语法:throw <异常对象>;
还有就是在方法声明中,添加throws子句表示该方法将抛出异常。
而throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。throws可以单独使用,但throw不能;
有高手可以告诉我还有其它区别吗?我特别想知道的是他们之间的联系都是有那些,或者在某一个程序中,作用的不同,求高手回帖,谢谢!

评分

参与人数 1黑马币 +12 收起 理由
Rancho_Gump + 12

查看全部评分

6 个回复

倒序浏览
throws 抛出的是异常类,可以抛出多个,所以带s,通常用来声明可能出现,并不一定出现。
throw  抛出的是异常对象,通常都是抛出1个,因为程序一出现异常就会停止执行,就算程序没有出现异常,但是你throw异常对象,程序也会停止,throw代表着异常已经出现。
回复 使用道具 举报
throws在方法声明部分使用,声明该方法可能会抛出异常;
throw则是在方法体的适当位置抛出异常的对象实例。
回复 使用道具 举报
仔细一看就知道了:  
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则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。
回复 使用道具 举报
简单的说
throw用在try后面
throws用在一个方法后面
比如
public static void Method()throws Exception{}

而且throws用来声明异常, throw用来抛出一个异常, 两者功能各不相同, 效果也不可能一样. 前者出现在方法声明中, 后者出现在方法体中.

throws声明和throw语句的关系是:

用throws声明了抛出异常的方法, 不一定要抛出实际的异常, 如

void aMethod() throws Exception {
  throws new Exception(); //此句可以出现也可以不出现
}

而反过来, 如果方法体中有明确的throw语句, 而又没有包裹在try{}块中, 那么一定要在方法上声明出来, 如

void aMethod() {
  throws new Exception(); //此句可以出现也可以不出现
}

这句是不能编译的, 必须在方法声明后面加上throws Exception.
回复 使用道具 举报
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
我也了解的不多。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马