/** * ドメイン非依存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 「例外修羅道」 Step03 解答例 | Javaドリル

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

eyecatch103-step03 103「例外修羅道」

ExceptionUtil.java

public class ExceptionUtil {

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

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

        } catch (ArrayIndexOutOfBoundsException e) {
            // 配列のインデックスが範囲外の場合
            System.out.println("エラー: インデックスが範囲外です");

        } catch (ArithmeticException e) {
            // ゼロ除算が発生した場合
            System.out.println("エラー: ゼロによる除算です");
        }
    }
}

解説:複数の例外に個別対応する

このステップでは、1つのメソッド内で複数の例外が発生しうる処理に対して、それぞれ別々の catch ブロックで対応する方法を学びます。


なぜ catch を分ける必要があるのか?

異なる種類のエラーに対して、それぞれ異なる対処をしたい場合、
catch を個別に書くことで、エラー内容に応じた処理分岐が可能になります。

try {
    // 複数の危険な処理
} catch (ExceptionTypeA e) {
    // エラーAに対する処理
} catch (ExceptionTypeB e) {
    // エラーBに対する処理
}

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

ExceptionUtil.process(new int[]{10, 20, 30}, 2, 10);
// → 選ばれた値: 30
// → 計算結果: 3

ExceptionUtil.process(new int[]{10, 20, 30}, 5, 2);
// → エラー: インデックスが範囲外です

ExceptionUtil.process(new int[]{10, 20, 30}, 1, 0);
// → 選ばれた値: 20
// → エラー: ゼロによる除算です

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

  • try ブロックの中で複数の例外が発生する可能性がある処理をまとめて記述できる
  • catch を分けることで、エラーごとに異なる対応ができる
  • 安全に処理を継続しながら、適切なエラーメッセージを出力できる構造を作るのがこのステップの目的

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


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

// tesh:
// 動いた=理解できた、とは限らない。こっちで整えよう。

🎯 実習で理解を深めよう

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

コメント

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