-1

Sonarブロッカー タイプである以下のコードのバグを示しています。閉じていないと不平を言っていFileInputStreamますが、どうすればそれを行うことができますか? FileInputStreamメソッドの戻り値の型であり、ここで閉じると、呼び出し元からは役に立たなくなります。FileInputStream同じメソッドがそれを返す場合、どのように最終ブロックで閉じることができますFileInputStreamか?

コードは次のとおりです。

@Override
public InputStream getInputStream() throws MissingObjectException {

    try {
        InputStream is;
        if (smbFile != null) {
            is = new BufferedInputStream(new SmbFileInputStream(smbFile), 60000);
        } 
        else {
            is = new BufferedInputStream(new FileInputStream(getFilePath()));
        }
        return is;
    }
    catch (Exception e) {
            throw new MissingObjectException();
    }
}
4

2 に答える 2

2

同じ関数で入力を閉じる必要はありません。問題は、ステートメントを配置するだけでなく、ブロック内で宣言InputStream isしないことです。try{}return

于 2016-09-28T10:19:07.550 に答える