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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 创造命运 中级黑马   /  2014-4-18 17:30  /  799 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 创造命运 于 2014-4-18 22:34 编辑

1、null与""都表示的是空,那么将这两个值分别赋给String对象,这两者(String s = null; 与 String s = "";)之间的区别是什么?

2、在看视屏时,看到老师用了两个处理异常的方法:try...catch...finally与try...finally。这两者之间又有什么不同呢?

3、在抛出异常的时候,一会儿用throws,一会儿用throw,都把我弄糊涂了。那么关键字throws和throw的用法有什么差异?

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 香菜病病患 于 2014-4-18 17:47 编辑

1、String其实是引用数据类型。String s=null;表示s这个变量没有指向任何实际的堆内存中的对象。String s="";表示其指向了堆内存中的一个String类型的对象,而里面存的是""
2、try代码块中写的是可能抛出异常的代码,然后用catch代码块来捕捉对应的异常并处理。而finally里的代码不管是否出现异常都会执行,例如我们的关闭资源(关闭数据库连接等等)的代码就写在finally代码块中。try和catch是对应存在的,finally代码块则可以写也可以不写。而你说到的try...finally我没见过这种用法。
3、throws用在函数上,用来告诉调用者这个函数可能会出现异常,但是函数内部没有处理,交由调用者处理。如果调用者只还是继续往外抛,最后甚至在主函数中也往外抛出的话,那么主函数会将异常抛给虚拟机处理。虚拟机的处理方式是当异常发生时直接结束程序,打印出异常信息。throw用在函数内部,用于抛出一个异常对象。
回复 使用道具 举报
1.null和“”虽然都是空,一个是指空的引用,一个是空字符串。空的引用是不可以再调用其它任何方法的,会抛出空指针异常,而空字符串仍然可以当成一个字符串使用,调用方法都没有问题。
2.try...catch...finally可以捕捉异常并处理,finally语句一定会执行。
try...finally不捕捉异常,一般是为了让finally里的语句必须执行才用这种语句。
3.throw用于抛出异常对象,后面跟的是异常对象,用在函数内。
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开,用在函数上。

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 sanguodouble1 于 2014-4-18 19:23 编辑

  1. <DIV class=blockcode>
  2. <BLOCKQUOTE>class A {
  3. public void Test() throws Exception {
  4. try {
  5. System.out.println("Test this Project!");
  6. } catch (Exception e) {
  7. throw new Exception(e.toString());
  8. }
  9. }
  10. }
复制代码


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

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 很给力!

查看全部评分

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