2017-11-25 5 views
1

画像処理アプリケーションです。以下に示すコードは、画像ファイルを作成し、完全に処理されたBufferedImageを保存するためのコードです。画像ファイルを作成しようとするとtry-catchがIOExceptionを捕捉しません

public static void saveAnh(BufferedImage anhHoanTat) { 
    String dc; 
    ui.save(); 
    input.nextLine(); 
    diachiluuanh = input.nextLine(); 
    dc = diachiluuanh 
     + diachi.substring(diachi.lastIndexOf("\\"), diachi.lastIndexOf(".")) 
     + "_ML."+ diachi.substring(diachi.lastIndexOf(".")+1); 
    File anhDaXuLy = new File(dc); 
    try { 
     ImageIO.write(anhHoanTat,diachi.substring(diachi.lastIndexOf(".")+1), anhDaXuLy); 
    } catch (IOException e) { 
     ui.warningSave(); 
    } 
    ui.hoanTat(dc); 
} 

IOExceptionを捕まえなかった点を除いて、すべて正常に機能しました。システムはエラーを示しました。それはFileNotFoundExceptionです。私の知る限り、例外はIOExceptionです。

Screenshot of what the system showed

をその後、私は正確に1 catch (FileNotFoundException e)をキャッチしようとしたが、その後、Eclipseは私が戻ってIOExceptionにそれを変更するようになります:システムがあったものの

スクリーンショット。

Screenshot of what Eclipse prompted me

Screenshot of what Eclipse prompted me

(それはFileNotFoundExceptionはすでにIOExceptionでキャッチされたことを私に言ったので、最終的に私はかなり戻ってそれを削除する必要がありました:Eclipseは私を促したものの

スクリーンショット

注:後でNullPointerExceptionを追加しました私の何が起こることは、あなたが正しく例外をキャッチすることを、あなたは(それを印刷している

Screenshot of what the system showed

答えて

1

:とコードがそれをキャッチし、まだシステムがあったもののIOExceptioncatch (NullPointerException | IOException e)

スクリーンショットをキャッチしていませんあなたのui.warningSave();メソッドで何をしているのかを考えてください)、catch(ui.hoanTat(dc);

コンパイルエラーが発生した後、プログラムが最後の行に到達するようにメソッドを終了しないでください日食翔あなたの結婚:IOExceptionをスロー

ImageIO.write()ので、それはすべてのケースをカバーしていないとして、あなたは、唯一のFileNotFoundExceptionをキャッチすることはできません。

また、FileNotFoundExceptionが冗長であるため、catch (FileNotFoundException | IOException e)の記述も間違っています。すでに拡張されているため、IOExceptionでカバーされています。

+0

でもまだ動作しません。 –

関連する問題