黑马程序员技术交流社区
标题:
三个问题
[打印本页]
作者:
创造命运
时间:
2014-4-18 17:30
标题:
三个问题
本帖最后由 创造命运 于 2014-4-18 22:34 编辑
1、null与""都表示的是空,那么将这两个值分别赋给String对象,这两者(String s = null; 与 String s = "";)之间的区别是什么?
2、在看视屏时,看到老师用了两个处理异常的方法:try...catch...finally与try...finally。这两者之间又有什么不同呢?
3、在抛出异常的时候,一会儿用throws,一会儿用throw,都把我弄糊涂了。那么关键字throws和throw的用法有什么差异?
作者:
香菜病病患
时间:
2014-4-18 17:44
本帖最后由 香菜病病患 于 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用在函数内部,用于抛出一个异常对象。
作者:
清风夜独醉
时间:
2014-4-18 17:50
1.null和“”虽然都是空,一个是指空的引用,一个是空字符串。空的引用是不可以再调用其它任何方法的,会抛出空指针异常,而空字符串仍然可以当成一个字符串使用,调用方法都没有问题。
2.try...catch...finally可以捕捉异常并处理,finally语句一定会执行。
try...finally不捕捉异常,一般是为了让finally里的语句必须执行才用这种语句。
3.throw用于抛出异常对象,后面跟的是异常对象,用在函数内。
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开,用在函数上。
作者:
sanguodouble1
时间:
2014-4-18 19:21
本帖最后由 sanguodouble1 于 2014-4-18 19:23 编辑
<DIV class=blockcode>
<BLOCKQUOTE>class A {
public void Test() throws Exception {
try {
System.out.println("Test this Project!");
} catch (Exception e) {
throw new Exception(e.toString());
}
}
}
复制代码
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2