2017-04-04 18 views
-1

何らかの理由でFileReaderが指定されたファイルを見つけることができません"read1.json"。私は数多くのことを試み、名前を変更する場所に変更しましたが、ファイル自体とは関係ありません。私はなぜそれがファイルを見つけることができないのだろうかと思います。FileReaderでファイルが見つかりません

Error:(13, 35) java: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown

Error:(13, 34) java: unreported exception java.io.IOException; must be caught or declared to be thrown

import jdk.nashorn.api.scripting.URLReader; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 

import java.io.FileReader; 

public class Main { 

public static void main(String[] args) { 
    JSONParser parser = new JSONParser(); 
    Object obj = parser.parse(new FileReader("C:\\Users\\Home\\Documents\\read1.json")); 

    JSONObject jsonObject = (JSONObject) obj; 
    System.out.println(jsonObject); 
    } 
} 
+0

ファイルread1.jsonはそのパスに存在しますか? – leoOrion

+0

'FileReaderが指定したファイルを見つけることができません" read1.json "' - いいえ、これはコンパイラがあなたに伝えているものではありません。コンパイラは、プログラムをコンパイルするには 'FileNotFoundException'を処理する必要があることを伝えています。 – BackSlash

+0

このコードにtry-catchブロックを追加し、例外がキャッチされたときにデバッグすると、例外は何を表していますか? – Detilium

答えて

1

FileReader cannot find the file I specified "read1.json"

いいえ。これは、コンパイラがあなたを語っているものではありません。コンパイラは、プログラムをコンパイルする場合はFileNotFoundExceptionIOExceptionの両方を処理する必要があることを伝えています。

try { 
    JSONParser parser = new JSONParser(); 
    Object obj = parser.parse(new FileReader("C:\\Users\\Home\\Documents\\read1.json")); 

    JSONObject jsonObject = (JSONObject) obj; 
    System.out.println(jsonObject); 
} catch (FileNotFoundException e) { 
    // handle file not found 
} catch (IOException e) { 
    // handle ioexception 
} 

か(この特定の場合には悪いデザイン)throws句を追加します:

try-catchブロックを使用し

public static void main(String[] args) throws FileNotFoundException, IOException { 
    JSONParser parser = new JSONParser(); 
    Object obj = parser.parse(new FileReader("C:\\Users\\Home\\Documents\\read1.json")); 

    JSONObject jsonObject = (JSONObject) obj; 
    System.out.println(jsonObject); 

} 
+0

try catchブロックを使用する必要があるのはなぜですか?そして、私はあなたのコードを試して、それは私に別のエラーを与える:エラー:(16、38)java:報告されていない例外org.json.simple.parser.ParseException;キャッチされるか、スローされると宣言される必要があります。 – Vitalynx

+0

@Vitalynx 'ParseException'と同じことですが、キャッチブロックが必要です。例外に関する質問は、[公式ガイド](http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html)を参照してください。 – BackSlash

0

をuはにFileNotFoundを処理するために、try-catchブロックを使用する必要があります例外がチェックされるため、例外が発生します。コンパイル時にチェックする必要があります。コンパイラはこのエラーをスローします。これは実行時に例外になる可能性があるため、実際に発生する前に処理することをお勧めします。

+0

コンパイラはスローしません。コンパイラはスローしません。コンパイル時ではなく、実行時に例外がスローされる – BackSlash

+0

私はこのエラーメッセージコンパイラが与えると言うことを意味します: エラー:(13,35)java:報告されない例外java.io.FileNotFoundException;キャッチされるか、スローされると宣言されている必要があります 例外ではありません。私はこのエラーメッセージについて話していました。 – yuvrajK

+0

ええ、それはコンパイル時エラーです。スローされた例外ではありません – BackSlash

関連する問題