黑马程序员技术交流社区
标题:
创建File类对象抛出异常的问题
[打印本页]
作者:
张亚青
时间:
2013-3-23 16:24
标题:
创建File类对象抛出异常的问题
需求:显示一个Frame窗口,其中包括三个组件:文本框TextField类型tf、文本区域TextArea类型ta和按钮Button类型but,在tf文本框中输入目录路径path,点击按钮but,在文本区区域内会显示path下的所有目录和文件。
其中用到了File对象时,有个try..catch 语块,出现了一点疑问,代码如下(问题写在了代码中):
import java.awt.*;
import java.awt.event.*;
import java.io.*;
/**
*/
class MyFrameTest
{
public static void main(String[] args)
{
new MyFrame();
}
}
class MyFrame
{
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
MyFrame()
{
init();
}
private void init()
{
f=new Frame("my window");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
ta=new TextArea(25,70);
ta.setEditable(false);
f.add(tf);
f.add(but);
f.add(ta);
addListeners();
f.setVisible(true);
}
private void addListeners()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String path=tf.getText();
String [] dirs=null;
ta.setText(null);
try
{
System.out.println(path.equals(null));
File f=new File(path);
dirs=f.list();
}
catch (NullPointerException npe)
{
System.out.println("发生空指针异常");
ta.append("输入路径"+path+"不合法,请重新输入");
}
/**
*问题出现在上面的try语句里,查看API发现,new File的时候会抛出空指针异常
*然而当在文本框tf里什么都不输入的前提下,直接点击按钮,这时path=null,try语句抛出异常被catch捕获,然后执行catch语句
*在文本区域fa应该会显示:"输入路径"+path+"不合法,请重新输入",
*可是为什么catch没有执行??????????
*/
ta.append("----路径"+path+"下目录和文件----");
if (dirs!=null)
{
for(String s:dirs)
ta.append(s+"\n");
}
}
});
}
}
复制代码
作者:
谢洋
时间:
2013-3-23 17:12
本帖最后由 谢洋 于 2013-3-23 17:14 编辑
你的程序根本就没发生异常,你可以做一个测试:直接让path=null;这样就会抛异常了:path不指向任何空间
File
public File(
String
pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
如果给定字符串是空字符串,那么结果是空抽象路径名。
参数:
pathname - 路径名字符串
抛出:
4
NullPointerException
- 如果 pathname 参数为
null
String path=tf.getText();//path已指向tf储存内容的空间,只是该空间没有装东西而已,并非path没有分配到空间
String [] dirs=null;
ta.setText(null);
try
{
System.out.println(path.equals(null));//false,表明path不等于null(null不指向任何空间),path已有所指向(分配空间)
File f=new File(path
);//path!=null当然不后抛NullPointerException
dirs=f.list();
}catch (NullPointerException npe){
System.out.println("发生空指针异常");
ta.append("输入路径"+path+"不合法,请重新输入");
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2