Java 为什么我仍然有FileNotFoundException从未在相应的try语句体中抛出?
对于我的应用程序,我一直收到这样的编译错误,即在相应的try语句体中从未抛出FileNotFoundException**我在actionlistener事件处理部分中有这样的错误,所以我不确定这是否是正确的方法 我知道catch异常位与try语句相关,它必须被称为related,因此在本例中,我将从用户的输入启动一个新的File对象类,但错误仍然存在 你们能给我一些建议吗?我还是个新手,不久前才开始使用Java 为什么我仍然有FileNotFoundException从未在相应的try语句体中抛出?,java,swing,file,try-catch,Java,Swing,File,Try Catch,对于我的应用程序,我一直收到这样的编译错误,即在相应的try语句体中从未抛出FileNotFoundException**我在actionlistener事件处理部分中有这样的错误,所以我不确定这是否是正确的方法 我知道catch异常位与try语句相关,它必须被称为related,因此在本例中,我将从用户的输入启动一个新的File对象类,但错误仍然存在 你们能给我一些建议吗?我还是个新手,不久前才开始使用GUI 主要类别: import javax.swing.*; import java.aw
GUI
主要类别:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
class MyFileLister extends JPanel implements ActionListener {
private JLabel prompt = null;
private JTextField userInput = null;
private JTextArea textArea = null;
public MyFileLister()
{
prompt = new JLabel("Enter filename: ");
prompt.setOpaque(true);
this.add(prompt);
userInput = new JTextField(28);
userInput.addActionListener(this);
this.add(userInput);
textArea = new JTextArea(10, 30);
textArea.setOpaque(true);
JScrollPane scrollpane = new JScrollPane(textArea);
this.add(textArea, BorderLayout.SOUTH);
}
Scanner s = null;
File af = null;
public void actionPerformed(ActionEvent f)
{
try
{
af = new File(userInput.getText());
}
catch(FileNotFoundException e)
{
System.out.println("Error");
}
}
}
驾驶员级别:
import java.util.*;
import java.awt.*;
import javax.swing.*;
class TestMyFileLister {
public static void main(String [] args)
{
MyFileLister thePanel = new MyFileLister();
JFrame firstFrame = new JFrame("My File Lister");
firstFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
firstFrame.setVisible(true);
firstFrame.setSize(500, 500);
firstFrame.add(thePanel);
}
}
java.io.File
对象只是表示一个抽象路径。由其表示的文件(或目录)是否存在在其创建时无关紧要。文件的构造函数不检查路径是否指向现有文件或文件夹
只有当你想打开文件时,它才起作用。然后您将得到一个FileNotFoundException
(如果它不存在)。java.io.File
对象只表示一个抽象路径。由其表示的文件(或目录)是否存在在其创建时无关紧要。文件的构造函数不检查路径是否指向现有文件或文件夹
只有当你想打开文件时,它才起作用。然后您将得到一个FileNotFoundException
(如果它不存在)。这是因为只能抛出NullPointerException
公共文件(字符串路径名)
通过将给定的路径名字符串转换为抽象路径名来创建新的文件实例。如果给定的字符串是空字符串,则结果是空的抽象路径名
参数:
路径名-路径名字符串
抛出:
NullPointerException-如果路径名参数为null
将您的catch
更改为
catch(NullPointerException e) {
并相应地采取行动。这是因为只能抛出NullPointerException
公共文件(字符串路径名)
通过将给定的路径名字符串转换为抽象路径名来创建新的文件实例。如果给定的字符串是空字符串,则结果是空的抽象路径名
参数:
路径名-路径名字符串
抛出:
NullPointerException-如果路径名参数为null
将您的catch
更改为
catch(NullPointerException e) {
错误很明显:语句af=newfile(userInput.getText())代码>不会(在任何时候)抛出FileNotFoundException
。Java允许您创建文件系统中不存在的文件
对象。如果没有,您将如何创建新文件;)因此,您的try catch
块在这里是无用的。您可能希望将异常类型更改为NullPointerException
,以便在将null
传递给File
构造函数时处理这种情况。错误非常清楚:语句af=newfile(userInput.getText())代码>不会(在任何时候)抛出FileNotFoundException
。Java允许您创建文件系统中不存在的文件
对象。如果没有,您将如何创建新文件;)因此,您的try catch
块在这里是无用的。您可能希望将异常类型更改为NullPointerException
,以便在将null
传递给File
构造函数时处理这种情况。将FileNotFoundException
更改为justexception
@mickey,这是错误和糟糕的编程实践。如果path参数为null,则该文件构造函数抛出NullPointerException,而不是FileNotFoundException。换成NPE,你会没事的。我不同意这是错误的,这只是一个建议,让天蝎座开始。一旦捕获到异常,当他/她看到异常时,可以将其更改为更具体的内容。@mickey感谢您的帮助@mttdbrd感谢您给我一个更好的建议:将FileNotFoundException
更改为Exception
@mickey,这是错误和糟糕的编程实践。如果path参数为null,则该文件构造函数抛出NullPointerException,而不是FileNotFoundException。换成NPE,你会没事的。我不同意这是错误的,这只是一个建议,让天蝎座开始。一旦捕获到异常,当他/她看到异常时,可以将其更改为更具体的内容。@mickey感谢您的帮助@mttdbrd感谢您给我一个更好的建议:D@JonathanDrapeau提供了一些有用的信息,让我明白为什么会出现这个错误。干杯@Jonathan Drapeau提供了一些有用的信息,让我明白为什么我会犯这个错误。干杯