目次 | 前の項目 | 次の項目 | JavaTM Image I/O API ガイド |
IIOException
を使用するエラー処理これまで紹介した例では、致命的エラーの可能性を考慮に入れていませんでした。エラーの発生源はいくつか考えられます。たとえば、実際の入出力エラー (ファイルが見つからない、ファイルを読み込めない、メディアが壊れている、など)、セキュリティー違反 (アプレットからのファイル読み込みが許されていない、など)、ファイル形式の問題 (ファイルの内容が壊れている、プラグインがサポートしていないバリエーションの形式が使われている、など) のほか、API の実装やプラグインにバグがある可能性もあります。Image I/O API では、標準の
IOException
クラスを独自にサブクラス化したIIOException
というクラスを利用します。IIOException
は、ソースファイルの解析中に遭遇したすべてのエラー (たとえば、チェックサムの誤りや、ファイル内の特定バイトの値が無効) を通知するために使用されます。これには、読み込みプラグインの内部でIOException
がスローされる結果になる、実際の入出力エラーも含まれます。
IIOException
には、例外の理由を記述したメッセージ (各言語への対応なし) と、そのIIOException
の原因となった別のException
への参照 (そのような例外が存在する場合) が含まれています。したがって、アプリケーションコードで適切なエラー処理を提供しようとすると、次のようなコードになります。
File f = new File("c:\images\myimage.gif"); ImageInputStream iis = null; try { iis = ImageIO.createImageInputStream(f); } catch (IIOException iioe1) { System.out.println("Unable to create an input stream!"); return; } reader.setInput(stream); try { reader.read(0, param); } catch (IIOException iioe2) { System.out.println("An error occurred during reading: " + iioe2.getMessage()); Throwable t = iioe2.getCause(); if ((t != null) && (t instanceof IOException)) { System.out.println("Caused by IOException: " + t.getMessage()); } }