返回信息流/**
* 获得所有.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()却不会抛;能给我解释下吗
这是一条镜像帖。来源:北邮人论坛 / java / #12920同步于 2010/1/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
try{}catch(){}的问题
true
2010/1/8镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
你问的那个人说得不对,那是想当然的想法。
看一楼的回复就行了。
【 在 true 的大作中提到: 】
: /**
: * 获得所有.jar文件
: *
: ...................
String s1 =fi.getPath();//加入fi不存在当然返回的是null了,这时候你操作s1当然要报空指针异常了。
String s1=new String();
s1=fi.getPath();//首先分配了一块内存,不过里面为"",即使fi不存在,s1还是取原来的值
当然不会抛异常了。
【 在 true 的大作中提到: 】
: /**
: * 获得所有.jar文件
: *
: ...................
NullPointerException不强制让你去catch
因为这是运行中的异常吧,编译时探测不到