LoginSignup
0
0

More than 3 years have passed since last update.

【自分用メモ】try-catch まとめ

Last updated at Posted at 2020-09-14

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();
    }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0