『Java入門編10:例外処理を理解しよう (全13回)』
メモ
#01:例外処理の概要を理解しよう
- 実行時エラーに対応するのが、例外処理。
- 例外処理(Exception)の機能
- try:あらかじめコードを指定して、プログラム実行時に、処理の問題を検出する
- catch:問題を検出した時、どのように対応するか記述しておく
- throws:対応を記述していない場合、メソッドの呼び出し元に対応を任せる
- 例外が発生する例(コンパイルエラーなし)
- ゼロで割り算
- 配列の範囲外アクセス
- ファイルが存在しない
- オブジェクトがnull
- 引数が不正 - 例外が発生する例(コンパイルエラーあり)
- 以下の処理を行う場合は、必ず例外処理を記述する。
- ファイルの読み書き
- ネットワークにアクセス
- データベースにアクセス
→ チェック例外(検査例外)
- 以下の処理を行う場合は、必ず例外処理を記述する。
#02:簡単な例外処理してみよう
- try-catch-finally
- try : 例外を捕捉する範囲
- catch : 例外ハンドラー。例外発生時の対応処理
- finally : 例外が発生してもしなくても、必ず実行する処理 - 例外処理 - 0除算
- try {
// 実行時エラーが起こりそうな処理
} catch (Exception e) {
e.printStackTrace();
} finally {
// 必ず実行する処理
}
- try {
#03:いろいろな書式で例外に対応しよう
- 例外処理のメッセージを「実行時エラー」タブに出力する
- System.err.println()
#04:発生させる例外を変えてみよう
- 数値変換の例外
- 登場した例外
- Exception すべての例外を捕捉する
- ArithmeticException ゼロ除算など、不正な算術計算で発生する例外
- NumberFormatException 数値変換する文字列が不正な形式の時に発生する例外
- ArrayIndexOutOfBoundsException 配列の範囲外にアクセスする例外
#05:複数の例外を捕捉してみよう
- 複数の例外に対応するコード
- try {
} catch (NumberFormatException e) {
} catch (ArithmeticException e) {
} catch (Exception e) {
} finally {
}
- try {
#06:具体例:標準入力でプレイヤーを選択する
- 具体例:標準入力でプレイヤーを選択するプログラム
#07:throwで意図的に例外を投げよう
- throwで直接例外を投げる
#08:テキストファイルを読み書きしよう
- 必要なライブラリのインポート
- import java.io.*;
import java.util.*;
- import java.io.*;
- ファイルの用意
- File file = new File("test.txt");
- テキストファイルを書きこむ(上書き)
- FileWriter filewriter = new FileWriter(file);
filewriter.write("Hello world\n");
filewriter.write("Hello Java\n");
filewriter.close();
- FileWriter filewriter = new FileWriter(file);
- テキストファイルを1行ずつ読み込む
- Scanner scan = new Scanner(file);
while (scan.hasNextLine()) {
String line = scan.nextLine();
System.out.println(line);
}
scan.close();
- Scanner scan = new Scanner(file);
#09:ファイルアクセスに例外処理を追加しよう
- ファイル読み書き + 例外処理
- throws IOExceptionを削除するとコンパイルエラー
- FileNotFoundException ファイルが存在しない場合の例外
#10:ファイルアクセスにtry-with-resourcesを使おう
- ファイルアクセス + try-with-resources
- 書き込み:try (FileWriter filewriter = new FileWriter(file)) {
- 読み込み:try (Scanner sc = new Scanner(file)) {
#11:例外クラスのクラス構成を理解しよう
- 例外オブジェクトの親子関係のサンプル
Exception ← RuntimeException ← IllegalArgumentException ← NumberFormatException - 例外関連クラスの種類
- Throwable
エラーと例外のスーパークラス - Exception
チェック例外/検査例外(プログラム内で捕捉が必要) - RuntimeException
非チェック例外/実行時例外(プログラム中で捕捉は任意) - Error
致命的な問題が発生し、実行を継続できない問題を表す。
- Throwable
- 主なチェック例外:Exception
- IOException
ファイルやネットワークなど入出力の問題を検出 - FileNotFoundException
ファイルが開けなかったことを検出。IOExceptionのサブクラス - SQLException
データベースアクセスの問題を検出
- IOException
- 主な非チェック例外
- ArithmeticException
ゼロ除算などの算術計算の問題を検出 - NumberFormatException
数値変換時に文字が与えられたことを検出。IllegalArgumentExceptionのサブクラス - ArrayIndexOutOfBoundsException
配列の範囲外アクセスを検出
- ArithmeticException
#12:throwsで例外処理を呼び出し元に任せよう
- throwsで、例外対応を呼び出し元に任せる
#13:throwとtry-catchで再スローしよう
- throwとtry-catchを組み合わせる再スローについて学習する。
- 再スローでは、メソッドのcatchブロックの中から、受け取った例外を呼び出し元にスローする。そのおかげで、捕捉した例外を、catchのところで出来るだけ対応して、残りの作業を呼び出し元に任せることができる。
認定証
やっぱり例外の勘所がつかめないな〜😕
チェック例外だったら、ちゃんと記述しておかないとコンパイルエラーなるらしいから、なんとかなるかもしれないけど。
何はともあれ、Java入門編もこれですべて修了だな。
契約期間も残り2日!?
さて、あと何個の講座を受けられるか?
全部終わらなかったとしても、とりあえず今月で解約して、
あともう1ヶ月単発で契約してみるかな?
まだ、受講していない講座はこんな感じかな?
- Webアプリ開発入門 Servlet/JSP編 (全4レッスン)
https://paiza.jp/works/servlet/primer - アルゴリズム入門編 (全3レッスン)
https://paiza.jp/works/algorithm/primer - C#入門編 (全10レッスン)
https://paiza.jp/works/cs/primer
学習ステータス
おぉ〜、なんか奇跡の騎士、かっちょえ〜😍
アップの写真も載せとこう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます