在方法中,我使用扫描仪读取文件内的文本。这个文件并不总是存在,如果不存在,我只想做什么(即没有扫描)。 当然我可以使用这样的try / catch:
String data = null;
try
{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
catch (FileNotFoundException ex)
{
}
我的问题是如何避免try / catch?因为我不喜欢局部变量未使用。我想的是:
String data = null;
File file_txt = new File(folder + "file.txt");
if (file_txt.exists())
{
Scanner scan = new Scanner(file_txt);
data=scan.nextLine();
scan.close();
}
但当然有了这个我在Netbeans中出错了,我无法构建我的项目......
答案 0 :(得分:5)
否,已检查异常。必须使用try阻止和/或catch阻止finally。有两种处理已检查异常的方法。
方法1:使用try/catch/finally
选项1
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
catch (FileNotFoundException ex)
{
System.out.println("Caught " + ex);
}
选项2
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}
finally
{
System.out.println("Finally ");
}
选项3
try{
Scanner scan = new Scanner(new File(folder + "file.txt"));
data=scan.nextLine();
scan.close();
}catch(FileNotFoundException ex){
System.out.println("Caught " + ex );
}finally{
System.out.println("Finally ");
}
方法2:使用throw
抛出异常,并使用throws
子句列出所有异常。
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
throwOne();
} catch (IllegalAccessException e) {
System.out.println("Caught " + e);
}
}
}
注意: Checked Exception意味着编译器会强制您编写一些内容来处理此错误/异常。因此,除了上述方法之外,AFAIK除了检查异常处理之外没有任何替代方法。
答案 1 :(得分:2)
FileNotFoundException
被检查异常,由于catch or specify behavior,您需要在方法声明的throws子句中捕获(或)指定它。
答案 2 :(得分:1)
怎么样
catch (FileNotFoundException ex)
{
// create a log entry about ex
}