黑马程序员技术交流社区
标题:
BufferedReader处理异常时的问题
[打印本页]
作者:
侯丛政
时间:
2013-2-13 23:47
标题:
BufferedReader处理异常时的问题
本帖最后由 侯丛政 于 2013-2-16 15:24 编辑
public boolean login(String username, String password) {
boolean flag = false;
BufferedReader br = null; // 在处理异常时为什么把 BufferedReader br 单独定义在外面, 并且置为null ?
try {
br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {
String data = line;
String[] strArray = data.split("=");
if (strArray[0].equals(username)
&& strArray[1].equals(password)) {
flag = true;
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
作者:
黑马-周建
时间:
2013-2-14 00:38
但是,classpath环境变量尽量少用,因为,一旦配置了classpath,在我们执行class文件的时候,本来是要到当前目录下执行我们需要执行的文件,但是不小心,当前目录下的class文件被删/或不存在,那么它就会自动的执行classpath环境变量下的class文件,这就造成我们不想看到的结果。在java的JDK1.5后就不需要我们配置classpath环境变量了。这给我们减少了很多麻烦。
配置path环境变量的技巧:
我们配置path环境变量的时候,路径会改变,会造成路径改错。我们可以使用用户变量如:JAVA_HOME配置jdk路径,再把JAVA_HOME作内容配置在path环境变量中。
我们到别人的计算机上运行或编写一个java程序,别人机器上又没有装有jdk。我们也不需要去装一个jdk,更不需要配置path环境变量,这里我们可以使用set命令临时的配置一个环境变量。
如set path=jdk路径
作者:
Gaara
时间:
2013-2-14 00:42
因为如果这么:BufferedReader br = new BufferedReader(new FileReader(file)); 写的话在try代码块之中定义的变量br 外面是无法用到的。
所以必须在外面建立引用BufferedReader br = null;
try中初始化 br = new BufferedReader(new FileReader(file));
这样才能做用于整个函数。(楼主可以试一下,不这么写会报错找不到变量br的)
而这个变量是为了读取东西加速的缓冲区。开始没读东西 当然就定义空了。也就是变量被存储的初始值。
作者:
罗海云
时间:
2013-2-14 09:26
因为在try里面的变量是局部变量,作用范围在定义它的最近的一个大括号内。如果是引用的话, 在try 的前面 定义: 类名 br = null;
在try里面给br赋值 。
作者:
郝强勇
时间:
2013-2-14 14:44
这个就是作用范围的问题了啊,其实并不难理解,我想到了这样一个小例子:
class Person{
private info in = null; //定义一个对象
public Person(info in){
this.in = in //接受这个对象
}
}
我们都知道,在方法内的变量是局部变量,在方法外不能使用,但又非得在方法内进行赋值操作。为了整体都能访问到这个变量
所以就定义在方法外面作为成员变量,也不会失掉在方法内进行赋值操作的需求。
作者:
李大强
时间:
2013-2-16 10:22
首先,一看你这个问题就知道其实你是把“处理异常”和“局部变量”弄混了!
我要说的是,此处此段代码“ BufferedReader br = null;”所放的位置与“处理异常”没有任何关系!
它之所以那样做是因为如果变量“br”定义在了try{ }语句块,那么它就成了一个局部变量,此时它的作用范围就只能局限在此
语句块中,到了后面的finally {}块中,是根本无法访问到此变量的!
所以这完全是“局部”与“全局”的区别,与“异常处理”根本无关,所以你可要分清楚了啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2