黑马程序员技术交流社区

标题: 请帮忙解答疑惑 [打印本页]

作者: 完美恋爱    时间: 2013-11-27 14:20
标题: 请帮忙解答疑惑
本帖最后由 完美恋爱 于 2013-11-27 19:56 编辑

throws是用来声明异常的,那为什么在main函数上throws是抛给JVM处理的意思啊?throws有抛出的意思吗?它不是声明的意思吗,抛出不是throw的功能吗?

作者: 王雷1    时间: 2013-11-27 14:30
本帖最后由 王雷1 于 2013-11-27 14:31 编辑

仔细一看就知道了:
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则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛
作者: 完美恋爱    时间: 2013-11-27 14:39
王雷1 发表于 2013-11-27 14:30
仔细一看就知道了:
public Test() throws RepletException {   
try {      

总而言之,throws既有声明的意思也有抛出的意思,对吗?
作者: 帅气的冬瓜    时间: 2013-11-27 14:49
总之一句话:throws定义在函数上,即声明也可抛,可抛多个异常,异常可用逗号隔开
                  throw 定义在函数内部,抛出具体异常
作者: 王松松    时间: 2013-11-27 14:56
声明一个异常表示这个方法可能会抛出这个异常
那么谁调用这个方法,谁就需要处理,处理不了就继续抛,或者抛出能处理的异常。
JVM处理不了这个异常,就打印出异常信息。
作者: 完美恋爱    时间: 2013-11-27 14:58
帅气的冬瓜 发表于 2013-11-27 14:49
总之一句话:throws定义在函数上,即声明也可抛,可抛多个异常,异常可用逗号隔开
                  throw ...

就是说throws对可能发生的异常进行声明,然后如果真的发生了异常就直接抛给调用者,对吗?
作者: 完美恋爱    时间: 2013-11-27 15:13
王松松 发表于 2013-11-27 14:56
声明一个异常表示这个方法可能会抛出这个异常
那么谁调用这个方法,谁就需要处理,处理不了就继续抛,或者 ...

大体上了解了,谢谢了哈!




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