0

作成したメソッドから文字列型のデータを返したいです。Eclipse は、try catch ブロックの後に戻り値の型を指定する必要があると言っています...それを行うと、Eclipse は String データをローカル変数として宣言する必要があることを教えてくれます...ここで何が問題なのですか?

private String ReadData() {
    try {
        FileInputStream fis = null;
        InputStreamReader isr = null;
        String data = null;
        fis = KVOContact.this.openFileInput("data.txt");
        isr = new InputStreamReader(fis);
        char[] inputBuffer = new char[fis.available()];
        isr.read(inputBuffer);
        data = new String(inputBuffer);
        isr.close();
        fis.close();

    } catch (IOException ioe) {
        Log.e("KVOContact", "IOError" + ioe);
    }
    return data;
}
4

5 に答える 5

8

あなたはブロックdata内で宣言しています。tryそのブロックの外では範囲外です。

宣言をブロックの前に移動することもできますが、個人的には、ブロックを完全に削除して、メソッドがをスローできることを宣言tryする方が理にかなっていると思います。また、例外がスローされた場合にブロックを開いたままにしないように、ブロック内を閉じる必要があります。catchIOExceptionFileInputStreamInputStreamReaderfinally

于 2012-06-11T09:37:21.023 に答える
3

data変数はtry句の範囲に限定されます。の外側で宣言してtryください。

于 2012-06-11T09:36:58.917 に答える
1

コードにいくつかの変更を加える必要があります。

private String ReadData() {
    String data = null;
    try {
        FileInputStream fis = null;
        InputStreamReader isr = null;        
        fis = KVOContact.this.openFileInput("data.txt");
        isr = new InputStreamReader(fis);
        char[] inputBuffer = new char[fis.available()];
        isr.read(inputBuffer);
        data = new String(inputBuffer);
        isr.close();
        fis.close();
    } catch (IOException ioe) {
        Log.e("KVOContact", "IOError" + ioe);
    }
    return data;
}

文字列データ変数をtryブロック内ではなく宣言する必要があります。そうしないと、trycatchブロックの外側で表示されないためです。

于 2012-06-11T09:37:50.893 に答える
1

returnはい、キャッチ部分でもステートメントを使用する必要があります。次のコードを調べてください。

private String ReadData() 
{
     try
     {
     .
     .
     . 
     return stringVariable;
     }
     catch ( IOException ioe )
     {
         Log.e("KVOContact", "IOError" + ioe);
         return NULL;
     }
}
于 2012-06-11T09:39:24.300 に答える
0

returndataステートメントをtryブロック自体の中に配置します。

catchは、tryブロック内でエラーが発生した場合にのみ呼び出されます。それ以外の場合は、tryが実行され、呼び出しが元の場所に戻されます。

于 2012-06-11T09:37:35.373 に答える