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

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

eyecatch103-step09 103「例外修羅道」

ExceptionUtil.java

public class ExceptionUtil {

    public static void traceError(int[] array, int index, int divisor) {
        try {
            // 指定されたインデックスの値を取り出し、割り算を行う
            int value = array[index];
            int result = value / divisor;
            System.out.println("計算結果: " + result);
        } catch (Exception e) {
            // エラー発生時に詳細情報を出力
            System.out.println("エラーが発生しました");
            System.out.println("原因: " + e.getMessage());
            e.printStackTrace(); // スタックトレースを出力(開発用)
        }
    }
}

解説:例外の原因を追跡する3つの情報

このステップでは、例外が発生したときにその詳細をログ出力する方法を学びます。


1. 固定メッセージ

System.out.println("エラーが発生しました");

ユーザー向けやログ監視用の基本的なアラート表示。


2. getMessage() で原因を要約

System.out.println("原因: " + e.getMessage());
  • / by zero ã‚„ Index 5 out of bounds for length 3 のように、エラーの主な内容を表示
  • ユーザーへの表示や、簡易ログに向いている

3. printStackTrace() で技術者向け詳細ログ

e.printStackTrace();
  • 例外が「どこで発生したか」までわかる
  • 開発中のデバッグや、ログファイルへの出力に有効
  • 本番環境ではログライブラリ(Log4j など)と連携してファイル出力するのが一般的

出力例(エラー時)

エラーが発生しました
原因: / by zero
java.lang.ArithmeticException: / by zero
    at ExceptionUtil.traceError(ExceptionUtil.java:5)
    ...

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

  • 例外発生時に何が起きたかをユーザーにも開発者にも伝える手段を持つことが重要
  • getMessage() と printStackTrace() を組み合わせて、適切なレベルの情報提供ができるようにする
  • 開発現場では、これらの出力をログファイルに残す設計が基本

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


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

// tesh:
// コードは書けた。でも、それだけで終わっていいのか?

🎯 実習で理解を深めよう

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

コメント

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