質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

5425閲覧

BufferedReader、FileReaderはtryとcatchがないと駄目ですか

KasperHekmatyar

総合スコア81

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/06/06 06:12

編集2017/06/06 06:14

###発生している問題・エラーメッセージ

①CSVファイルデータを入れて読み込ませるプログラムを作っているのですが、
講師の解答例を見るとtryとcatchがあるのですが、これがないと駄目ですか?

###該当のソースコード

java

1public static List<Test_UserAccount> readUserAccountCSV() { 2 //csvファイル(*.csv)1行分データ取得用 3 String s = null; 4 //CSVファイルデータメモリ保持格納用 5 BufferedReader br = null; 6 //本処理結果データ戻り値格納用 7 List<Test_UserAccount> vrb_list = new ArrayList<Test_UserAccount>(); 8 //本処理結果データ戻り値格納整理用 9 Test_UserAccount vrb_user = null; 10 11 try { 12 //1.CSVファイルデータメモリ保持格納 13 br = new BufferedReader( 14 new FileReader( 15 "D:/javaide_ws_asou/WITC_SI_KENSHU_5TH/src/exercise_variable/testauth.csv")); 16 17 //2.CSVファイルデータを1行単位で読む 18 while ((s = br.readLine()) != null) { 19 // 2-1.区切り文字:カンマで分割したString配列を得る 20 String array[] = s.split(","); 21 // 2-2.カンマで分割したString配列について、ユーザーアカウントクラスに格納・整理 22 vrb_user = new Test_UserAccount(array[0],array[1]); 23 24 System.out.println(vrb_user); 25 // 2-3.本処理結果データ戻り値Listに格納する 26 vrb_list.add(vrb_user); 27 } 28 System.out.println("aaa"+vrb_list); 29 30 } catch(FileNotFoundException e){ 31 //物理的なファイルパスが実在しない場合、異常終了エラー出力 32 e.printStackTrace(); 33 34 } catch (IOException e) { 35 //ファイル読み取り時の想定外異常終了エラー出力 36 //IO = I:Input(入力,読取)/O:Output(出力) 37 System.out.println("入出力エラーがありました"); 38 //業務の書き方(eに格納されているエラーを出力する) 39 e.printStackTrace(); 40 }finally{ 41 try { 42 br.close(); 43 } catch (IOException e) { 44 // TODO 自動生成された catch ブロック 45 e.printStackTrace(); 46 } 47 } 48 return vrb_list; 49 } 50

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

例外処理を勉強してください。

RuntimeExceptionを継承した例外に関しては、try catchをしなくてもコンパイルはできます。

例外を投げるクラスを利用するのに例外処理しないと、例外が発生した場合プログラム
が止まります。練習問題ならいいでしょうが、世に出ているシステムでそんなことになったら
大変です。

投稿2017/06/06 06:19

kanimaru

総合スコア1013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KasperHekmatyar

2017/06/06 06:23

例外処理をしても例外は正しい読み込みが出来なかったことになるので、例外処理をしなくてもプログラムが止まるのではないですか?
kanimaru

2017/06/06 06:35

とまりません。例外処理で処理した内容でプログラムが動作します。 例外処理をしない場合は、プログラム自体が動作を止めます。 例外処理をする場合、例えば上記のプログラムの例で行きましょう。 "D:/javaide_ws_asou/WITC_SI_KENSHU_5TH/src/exercise_variable/testauth.csv" このファイルを誰かが消した後に、今回作成したプログラムで例外処理をしていない状態のプログラムを動作させたらどうなるでしょうか。 それはもちろんそこでプログラム自体が止まります。 では、プログラムを止めないならどうしたらいいでしょうか? 例えばこのプログラムの仕様として、ファイルがないことをユーザに通知しなければならなかったとしたら。その場合、プログラムが止まってしまっては、通知することもできませんよね? 講師の方が以下のようにしたとあります } catch(FileNotFoundException e){ //物理的なファイルパスが実在しない場合、異常終了エラー出力 e.printStackTrace(); // この部分にユーザへ通知する処理 } 以下に関しては例外が起こっても怒らなくても必ず行う処理を書きます。 }finally{ try { br.close(); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } プログラムは物事を解決または、叶えるための1つの手段です。 今はプログラムを勉強することが内容だと思います。しかし、そのプログラムは仕様があってのプログラムです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問