• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaでエラーを起こす変数の特定)

Java初心者がtry-catchでエラーを特定する方法について質問

このQ&Aのポイント
  • 質問内容:java初心者がtry-catchでエラーを特定する方法について教えてください。
  • 質問詳細:アプレットで画像を表示させる際に、画像ファイルの存在確認を行い、存在しない場合はエラーメッセージを表示したいです。img1とimg2の変数を使用していますが、どの変数がエラーを起こしたのかを特定する方法があれば教えてください。
  • 質問背景:Javaのtry-catchでエラー処理を行う際に、エラーを起こした変数を特定する方法が分からず困っています。冗長なコードが増えるため、効率的な方法があれば教えてほしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yahharo
  • ベストアンサー率100% (2/2)
回答No.3

まずはException を System.out.println("エラー" + e + "が返されました"); にしてしまうとtoString()しているだけなので、 System.out.println("エラー" + e.getMessage() + "が返されました"); などにしてちゃんとメッセージを確認してみてはいかがでしょうか。 大体のファイル系のエラーはファイル名が出てきた気がします。 また、「読ませるファイルが存在しない場合」は FileNotFoundExceptionが発生すると思うので、 catchの部分は分けたほうがいいと思います。 try{ //・・・省略 }catch(FileNotFoundException e){ //ファイルがない場合の処理 }catch(Exception e){ //その他の異常処理 } URLは参考までに

参考URL:
http://www7a.biglobe.ne.jp/~java-master/samples/exception/FileNotFoundExceptionTest.html
jade3312
質問者

お礼

こんにちは. 回答ありがとうございます. e.getMessage()は使ったことが無く,初めて知りました. また,参考URLやコード例を示して下さりありがとうございます.とても勉強になります. お二人のおっしゃる通り,exists()の関数を用いようと思います. ありがとうございます.

その他の回答 (2)

  • MVC
  • ベストアンサー率42% (3/7)
回答No.2

もし、ファイルが無いことが想定されるのなら、Exception を発生させるのではなく、 処理の前にファイルが存在するかチェックをすべきです。

参考URL:
http://docs.oracle.com/javase/jp/6/api/java/io/File.html#exists()
jade3312
質問者

お礼

こんにちは. 回答ありがとうございます. 参考URLもありがとうございます. ファイルが存在するかどうかをチェックする関数があるのですね.はじめて知りました. ご指摘の通り,処理の前にファイルの存在をチェックする方が,Exceptionを発生させるより良い方法ですね. URL先には他にも今後よく使いそうな関数ばかりでとても勉強になりました. どうもありがとうございます.

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 このやり方が合っているかはわかりませんが、以下のようにするとどの画像でエラーが起きたかわかります。 無駄なクラスだ!ってなるのであれば String error = ""; try { error = "img1"; img1 = getImage(getClass().getResource("img/sample1.jpg")); error = "img2"; img2 = getImage(getClass().getResource("img/sample2.png")); } catch ( Exception e ) { System.out.println ( error + "の読込エラー" ); } のようにするとimg1で例外が発生すればerrorは"img1"、img2のgetImageで例外が発生すればerrorは"img2"になっているのでこれでも判別出来ますね。 ==== ImageInfo.java(画像名とパスを保持するクラス) public class ImageInfo { private String name; private String src; public ImageInfo ( String name, String src ) { this.name = name; this.src = src; } public String getName() { return this.name; } public String getSrc() { return this.src; } } ==== Test.java(メイン) public class Test extends Applet { public Test() { try { ImageInfo imageInfo1 = new ImageInfo("img1","path" ); ImageInfo imageInfo2 = new ImageInfo("img2","path" ); Image img1 = this.loadImage(imageInfo1); Image img2 = this.loadImage(imageInfo2); } catch ( Exception e ) { System.out.println(e.getMessage()); } } private Image loadImage ( ImageInfo imageInfo ) throws Exception { try { return getImage(getClass().getResource(imageInfo.getSrc())); } catch ( Exception e ) { throw new Exception ( imageInfo.getName() + "の読込みに失敗しました。" ); } } }

jade3312
質問者

お礼

こんにちは. 回答ありがとうございます. ソースコード例も載せてくださりとても分かりやすいです! Stringにあらかじめ変数名を入れておくのは楽でいいですね! 参考にさせていただきます.

関連するQ&A