我可以避免Java中的catch块吗?

use*_*496 0 java exception try-catch

在方法内部,我使用扫描仪读取文件内的文本.这个文件并不总是存在,如果没有,我只想做什么(即没有扫描).当然我可以使用这样的try/catch:

String data = null;
try
{
    Scanner scan = new Scanner(new File(folder + "file.txt"));
    data=scan.nextLine();
    scan.close();
}
catch (FileNotFoundException ex)
{
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我可以做些什么来避免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();
}
Run Code Online (Sandbox Code Playgroud)

但当然有了这个我在Netbeans中得到一个错误,我无法建立我的项目......

Rav*_*avi 5

,它被检查了异常.尝试必须跟随catch块和/或最后阻止.处理已检查异常有两种方法.

方法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);
}
Run Code Online (Sandbox Code Playgroud)

选项2

try{
    Scanner scan = new Scanner(new File(folder + "file.txt"));
    data=scan.nextLine();
    scan.close();

}
finally
{ 
      System.out.println("Finally ");
}
Run Code Online (Sandbox Code Playgroud)

选项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 ");
     }  
Run Code Online (Sandbox Code Playgroud)

方法2:使用throw和列出所有异常with 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);
        }
    }
    }
Run Code Online (Sandbox Code Playgroud)

注意: Checked Exception意味着编译器强制您编写一些东西来处理此错误/异常.因此,AFAIK,除了上述方法之外,没有任何替代方法可以检查异常处理.