/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 103 「例外修羅道」 Step04 解答例 | Javaドリル

103 「例外修羅道」 Step04 解答例

eyecatch103-step04 103「例外修羅道」

ExceptionUtil.java

public class ExceptionUtil {

    public static void safeProcess(int[] array, int index, int divisor) {
        try {
            // 配列から要素を取得
            int value = array[index];
            System.out.println("選ばれた値: " + value);

            // 割り算を実行
            int result = value / divisor;
            System.out.println("計算結果: " + result);

        } catch (Exception e) {
            // すべての例外をまとめて捕捉
            System.out.println("例外が発生しました: " + e.getMessage());
        }
    }
}

解説:Exception でまとめて catch する

このステップでは、ArrayIndexOutOfBoundsException や ArithmeticException のような
複数種類の例外を、親クラスである Exception でまとめて捕捉する方法を学びます。


Exception は例外クラスの親

Javaの例外階層では、ほとんどの例外は Exception クラスを継承しています。

Exception
├── RuntimeException
│ ├── ArithmeticException
│ └── ArrayIndexOutOfBoundsException
└── IOException など

このため、catch (Exception e) と書けば、ほとんどの例外を一括で処理できます。


出力例(テストコードによる結果)

safeProcess(new int[]{10, 20, 30}, 1, 5);
// → 選ばれた値: 20
// → 計算結果: 4

safeProcess(new int[]{10, 20, 30}, 3, 2);
// → 例外が発生しました: Index 3 out of bounds for length 3

safeProcess(new int[]{10, 20, 30}, 0, 0);
// → 選ばれた値: 10
// → 例外が発生しました: / by zero

getMessage() で原因を知る

例外オブジェクトの getMessage() を使うと、何が起きたのかのメッセージを取得できます。
これはログ出力やユーザーへの通知に役立ちます。


まとめ:このステップで学ぶべきこと

  • Exception でcatchすれば、個別の例外をすべて一括で処理できる
  • 一括catchは便利だが、個別の対処ができないというデメリットもある
  • getMessage() を使えば、例外の内容を簡単に取得できる

103 ステップアップ問題 「例外修羅道」


Just Keep Typing, Baby!では、この「例外修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!

// tesh:
// この違和感、ここで処理しないと残るよ。

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

タイトルとURLをコピーしました