2020/09/15初投稿
2020/09/18更新
◎今回練習したいメソッドまとめ
tryメソッド---実行したい処理内容
catchメソッド---tryメソッドを実行中にエラーが起きた場合の処理
finallyメソッド---catchメソッドを実行してもしなくても、最後に必ず実行するブロック
◎この記事の内容
"data.txt"という新しいテキストファイルをエクスプローラー内に生成する。
FileWriterを使い そのテキストファイル内に文字を書き込む。
try-catch-finallyメソッドを使用し、細かなエラー処理と
closeメソッドを設定する。
(closeメソッドとは・・ファイルを開いた際には必ず書く、”ファイルを閉じるための処理”)
package trycatch;
import java.io.FileWriter;
import java.io.IOException;
public class trycatch1 {
public void test() {
FileWriter fw=null;
/*入出力処理で、自分で何らかのファイルを開くコードを書いたなら、
必ずファイルを閉じるコードも書く。=closeメソッド*/
/*closeメゾットをtry-catchメソッドの外に書くために、
* ここでFileWriterを登場させる。
* なぜtrycatchメソッドの外にcloseメソッドを書くのか?
* =tryメソッドでエラーを発見すると、ただちにcatchメソッドに移動してしまうので、
* closeメソッドが実行されない可能性があるから*/
try {
fw=new FileWriter("data.txt");
/*ここで"data.txt"という新しいテキストファイルを
このプロジェクト下につくってくれる。
そのファイルをプロジェクトをWindowエクスプローラーで開くと直接見れる。
あらかじめ作ったファイルに書き込むなら(例)("c:\\nameOFfolder\\nameOFfile.txt")*/
fw.write("hello");
fw.write("へろー");
/*実行してもdata.txtに文字が入っていない時は
* close()メソッドがうまく動いていない可能性あり。
* write()メソッドでテキスト挿入の指示をだしても、
* それをJVMが実際に書いてくれるのはclose()するまえだったりする。タイムラグ*/
fw.flush();
//強制的な書き込み指示
}catch(IOException ioe){
System.out.println("入出のエラーが発生しました");
System.out.println(ioe);
}catch(Exception e){
System.out.println("なんらかのエラーが発生しました");
/*↑なぜここでIOEceptionを先に書くのか?=
*javaでは、複数のエラー処理を設定してある場合は、
うえから順に確認していく。ひとつのエラー処理をすると
try-catchメソッドの外に出る。*/
System.out.println(e);
}finally{
if(fw!=null) {
//なぜ↑がnullになる可能性があるのか?=>クラスの一番上でnullを入れてるから。
try {
fw.close();
//なぜif文書くの?=>ここのfwがnullになったらNullPointerExceptionが発生するので、if文を書く
}catch(IOException ioe) {
System.out.println("ファイルを閉じる際に何らかのエラーが発生しました");
}
/*◎なぜfinallyブロック内にtry-catchブロックを書くのか?
==>[closeメソッドを書く上で予期されるエラー]の対策がないと、IOExceptionが発生するから。
*/
}
}
}
public static void main(String[] args) {
}
}
◎mainメソッド
package trycatch;
public class main {
public static void main(String[] args) {
//インスタンス生成
trycatch1 t=new trycatch1();
//実行
t.test();
}
}