A common question: should you catch the exception here, or let it propagate? The answer depends on whether the current method can do something useful about the problem.
Catch when you can recover. If a file is missing and you can use a default value instead, catch the FileNotFoundException right there.
Throw when you cannot recover. If a method reads a config file and the file is missing, the method has no idea what default to use. Declare throws and let the caller decide.
A method deep in your program should not print error messages or show dialogs. That is the job of the code that knows about the user interface. Low-level methods should throw. High-level methods should catch.