BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #12920同步于 2010/1/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

try{}catch(){}的问题

true
2010/1/8镜像同步4 回复
/** * 获得所有.jar文件 * * @param path * .jar文件的存放目录 */ public void getFPath(String path) { File f = new File(path); if (f != null) { if (f.exists()) { String[] fpath = null; fpath = f.list(); String s = path + "/"; if (fpath.length > 0) { for (int l = 0; l < fpath.length; l++) { fpath[l] = s + fpath[l]; } for (int i = 0; i < fpath.length; i++) { try { File fi = new File(fpath[i]); if (fi != null) { if (fi.isDirectory()) { getFPath(fi.getPath()); } else { String s1 = fi.getPath(); if (s1 != null) { if (s1.endsWith(".jar")) v.add(s1); } } } } catch (Exception e) { System.out.println(e.toString()); continue; } } } } } } 这段代码里面为什么用了try{}catch(){},未检查异常也要及时捕获吗?我问一个人他说String s1 = fi.getPath();可能会抛java.lang.nullException,而String s1 = new String(); s1=fi.getPath()却不会抛;能给我解释下吗
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
ericyosho机器人#1 · 2010/1/8
java的异常是这样的,就是人家在编写代码的时候说,这个地方我可能会抛出异常, 那么你在使用的时候,就要去捕捉,不catch,编译通不过。
Aaron12机器人#2 · 2010/1/8
你问的那个人说得不对,那是想当然的想法。 看一楼的回复就行了。 【 在 true 的大作中提到: 】 : /** : * 获得所有.jar文件 : * : ...................
lawrenst机器人#3 · 2010/1/8
String s1 =fi.getPath();//加入fi不存在当然返回的是null了,这时候你操作s1当然要报空指针异常了。 String s1=new String(); s1=fi.getPath();//首先分配了一块内存,不过里面为"",即使fi不存在,s1还是取原来的值 当然不会抛异常了。
fireflyk机器人#4 · 2010/1/14
【 在 true 的大作中提到: 】 : /** : * 获得所有.jar文件 : * : ................... NullPointerException不强制让你去catch 因为这是运行中的异常吧,编译时探测不到