I am supposed to create a sample program for exception handling for file operations for my java assignment. I am having trouble understanding since I am a C++ guy. It would be really very helpful if somebody could point out the flaw in my code below. I am referring this article. Eclipse is giving me “Unreachable catch block for FileNotFoundException. This exception is never thrown from the try statement body” error.
import java.io.*;
public class file {
public static void main(String[] args) {
String arg1 = args[0];
String arg2 = args[1];
System.out.println(arg1);
System.out.println(arg2);
File f1, f2;
try {
f2 = new File(arg2);
f1 = new File(arg1);
}
catch(FileNotFoundException e) {
/*
if(!f1.exists()) {
System.out.println(arg1 + " does not exist!");
System.exit(0);
}
if(!f2.exists()) {
System.out.println(arg2 + " does not exist!");
System.exit(0);
}
if(f1.isDirectory()) {
System.out.println(arg1 + " is a Directory!");
System.exit(0);
}
if(f2.isDirectory()) {
System.out.println(arg2 + " is a Directory!");
System.exit(0);
}
if(!f1.canRead()) {
System.out.println(arg1 + " is not readable!");
System.exit(0);
}
if(!f2.canRead()) {
System.out.println(arg2 + " is not readable!");
System.exit(0);
}*/
}
}
}
Look at the docs for the
Fileconstructor you’re calling. The only exception it’s declared to throw isNullPointerException. Therefore it can’t throwFileNotFoundException, which is why you’re getting the error. You can’t try to catch a checked exception which the compiler can prove is never thrown within the correspondingtryblock.Creating a
Fileobject doesn’t check for its existence. If you were opening the file (e.g. withnew FileInputStream(...)then that could throwFileNotFoundException… but not just creating aFileobject.