2016-12-07 20 views
0
package test4; 

import java.io.*; 

public class Reader { 

    public static void main(String[] args) { 
     print(send("test.txt")); 
    } 

    public static BufferedReader send(String filename) { 
     File file = null; 
     FileReader filer = null; 
     BufferedReader filed = null; 

     try { 
      file = new File(filename); 
     } catch(FileNotFoundException e) { 
      System.err.println("Could not find file!"); 
     } 

     try { 
      filer = new FileReader(file); 
     } catch(Exception e) { 
      System.err.println("Could not initialize file reader!"); 
     } 

     try { 
      filed = new BufferedReader(filer); 
     } catch(Exception e) { 
      System.err.println("Could not initialize buffered reader!"); 
     } 

     return filed; 
    } 
} 

sendメソッドは、Fileが見つからないため、BufferedReaderをnullに返します。 EclipseにはprintメソッドのためにNullPointerExceptionがあると言われていますが、try/catchステートメントをすべて削除すると、メソッドはIOExceptionまたはFileNotFoundExceptionをスローするように書く必要があります。それはFileNotFoundExceptionをスローしません。しかし、私がファイルのFileNotFoundExceptionをキャッチしようとすると、Eclipseは到達不能なコードであると言いますか?ここでは基本的にはこのビット:なぜこのFileNotFoundExceptionをキャッチできないのですか?

try { 
     file = new File(filename); 
    } catch(FileNotFoundException e) { 
     System.err.println("Could not find file!"); 
    } 

なぜEclipseは、このコードは、ちょうどのtry/catch文を削除するときに到達不能である私はにFileNotFoundExceptionをスローすることを可能にすることを言いますか?

+2

新しいファイル(ファイル名)が '' FileNotFoundException'をスローしません '、あなたが'作成するために許可されています。あなたはFileNotFoundExceptionをキャッチしたい場合は、ファイルが存在しない場合、あなたはこのような何かを行うことができます既存の物理ファイルが存在しないファイル( 'exists()'が存在する理由です)。 – Berger

答えて

0
try { 
    file = new File(filename); 
} catch(Exception e) { 
    System.err.println("Could not find file!"); 
} 
4

ファイルのコンストラクタdoesntのスローFileNotFoundExceptionを、あなたはJavadocで、ここでそれを見ることができます:

公開ファイル(文字列のパス名)

が与えられた を変換して、新しいFileのインスタンスを作成します。パス名文字列を抽象パス名に変換します。与えられた 文字列が空文字列の場合、結果は空の抽象 パス名になります。

パラメータ:パス名 - パス名文字列

例外:NullPointerException - pathname引数が

nullです。しかしFileReaderのがスローした場合!ここでも、別のjavadoc

パブリックFileReaderの(ファイルのファイル) がFileNotFoundExceptionをから読み込むためのファイルを指定して、新規FileReaderを作成しますがスローされます。

パラメータ:file -

から読み込むためのファイル例外:FileNotFoundExceptionをする - ファイルが存在しない場合は、 ディレクトリではなく、通常のファイルである、または他のいくつかの理由で は読み込みのために開くことができません。

0

ファイルが存在しないではない場合でも、あなたはfile.exists()を使用していることを確認することができ、FileNotFoundExceptionをスローしませんFile(filename)コンストラクタ。

存在しないファイルを読み込もうとすると、FileNotFoundExceptionがスローされます。

0

私はあなたのプログラムを実行しようとしました。次の画像filePathがnullですが、ファイルが

debugger... enter image description here

file nullではないと言うが作成されます。

 if(!file.exists()){ 
      throw new FileNotFoundException("File not found"); 
     } 
関連する問題