知道美河 | 上传资料 | VIP申请 | 精品课程 | 资料搜索 | 问题反馈 | 会员手册 | 积分消费 | 积分充值 | 帐号保护
美河学习学习在线赞助VIP

美河学习在线(主站) eimhe.com

 找回密码
 建立账号
查看: 8115|回复: 8

[咨询] throws和throw区别

[复制链接]
发表于 2007-4-18 10:23:46 | 显示全部楼层 |阅读模式
throw抛出的是异常对象,而throws只是声明异常类型,而并没有实际生成异常对象
我的结论正确吗?
发表于 2007-4-18 12:08:00 | 显示全部楼层
throw用于显式地引发异常,执行语句将在throw语句后立即停止。
throws 一般用于“一个方法可能引发多个异常的情况”,在语句中用条件来判断执行哪一个异常。
二者都生成异常对象的
 楼主| 发表于 2007-4-18 13:37:06 | 显示全部楼层
发表于 2007-4-18 14:23:02 | 显示全部楼层
比如
public class Text{
         int x = 1;
         int y =-1;
         public void a(){
              try{
                         b();
                  }catch(Exception e){
                           }
         }
      
         public void b() throws NullPointerException,NegativeArraySizeException{
                   if(x<0)
                          throw new NullPointerException();
                   if(y>0)
                          throw new NegativeArraySizeException();
          }
}
 楼主| 发表于 2007-4-18 14:50:24 | 显示全部楼层
那如果throws和throw都将生产Exception对象,那么为什么
throw new Exception时还必须throws 这个Exception的呢????,那不就是创建了两个Exception了吗

例如如下代码:
import java.sql.SQLException;

public class test{
          public void  setID()throws SQLException{     //此处创建了一个Exception对象
                      throw new SQLException("connection error!"); //此处又创建了一个Exception对象
          }
}

[ 本帖最后由 luofcoscowork 于 2007-4-18 16:20 编辑 ]
发表于 2007-4-18 15:26:53 | 显示全部楼层

回复 #5 luofcoscowork 的帖子

当其中一个异常被捕获,其他的语句就不在执行了,所以不会创建2个Exception对象。
举个简单的例子,就说登录里面的用户名好了,若超过规定字符的长度抛出个异常,告诉用户长度必须小于x,若输入数字抛出异常,告诉用户只能输入字母。。。。。。。但是他不会同时告诉你这些异常,因为当其中之一被捕获时程序就程序就停止了,所以下面的捕捉其他异常的语句都不会被执行!
 楼主| 发表于 2007-4-18 16:22:26 | 显示全部楼层
代码如下:
import java.sql.SQLException;

public class test{
          public void  setID()throws SQLException{     //此处创建了一个Exception对象
                      throw new SQLException("connection error!"); //此处又创建了一个Exception对象
          }
}
当调用setID()时,不还是创建了两个Exception对象

[ 本帖最后由 luofcoscowork 于 2007-4-18 16:23 编辑 ]
发表于 2007-4-18 16:28:40 | 显示全部楼层

回复 #7 luofcoscowork 的帖子

哦,你是这个意思啊,只有new出来的才算是创建了一个对象,上面的不算的
 楼主| 发表于 2007-4-18 16:59:32 | 显示全部楼层

回复 #8 lastwolf 的帖子

原来是你我语义理解不同呀,十分感谢,有问题还请多多指教
您需要登录后才可以回帖 登录 | 建立账号

本版积分规则

 
QQ在线咨询

QQ|小黑屋|手机版|Archiver|美河学习在线 ( 浙网备33020302000026号 )

GMT+8, 2025-5-7 15:17

Powered by Discuz!

© 2001-2025 eimhe.com.

快速回复 返回顶部 返回列表