「その他の場合」の条件分岐・Javaソースコードの書き方

「その他の場合」のif文

if文で処理を分ける場合、「その他の場合」においてログ情報を出力しておくと、デバッグ時に役立ちます。

プログラム処理上(プログラム仕様上)実行されない「その他の場合」は、当然実行されないので、プログラム処理を書く必要はありません。
「その他の場合」に注意しかしプログラム記述ミスや、プログラム作成時に予想できない不具合によって、実行されない「その他の場合」の部分に、プログラム処理が来てしまうことがあります。

その場合、プログラムが期待通りに動作しない可能性があります。
そのような時、「その他の場合」においてログ情報を出力しておくと、プログラムの不具合に気づく「きっかけ」になる、と思います。

if文の例

以下に「その他の場合」について、ログ情報を出力している例を示します。
プログラムの詳細を理解する必要は、ありません。

public ActionForward perform(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
    ...
    MessageBoardForm boardForm = (MessageBoardForm)form;
    String action = boardForm.getAction();
    if (action.equals("forward")){
        int boardID = boardForm.getBoardID();
        ...
    }
    else if (action.equals("back")){
        int boardID = boardForm.getBoardID();
        ...
    }
    else if (action.equals("write")){
        return mapping.findForward("contributionDo");
    }
    else if (action.equals("message")){
        int boardID = boardForm.getBoardID();
        ...
    }
    else{
        //next 休止中.htmlなど、表示する。
        throw new RuntimeException("invalid action=" + action);
    }
    ...
}

if文の「最後のelse部分」が、「その他の場合」の処理です。
次の文で、ログ情報を出力しています。
throw new RuntimeException(“invalid action=” + action)

action変数の文字列で処理を分けていますが、どの場合にも当てはまらない時に、ここに来ます。
上記のプログラムでは、プログラム仕様上ありえない場合に――action変数に「無効な文字列」が設定された場合に――処理が「その他の場合」に来ます。
処理が「その他の場合」に来る時は、プログラム処理上、不具合が起きています。

よってRuntimeExceptionクラスを作成して、実行時に解決できないエラーが発生した、ということで処理を中断しています
この自作のエラーは、ログファイルに記録されるでしょう。よってプログラム処理で、何か不具合が起きていることに気がつくでしょう。

考えられるプログラムの不具合

処理が「その他の場合」に来た時、プログラムの不具合として、次の事が考えられます。
例:プログラムの記述ミス

  • action変数に設定する文字列を、間違って記述してしまった
  • action変数の分岐処理(例:else ifブロック)を、書き忘れてしまった
    など。

ここで上記のプログラム例において、次の場合を考えます。

  • acton変数に、メッセージの削除を示す”delete”文字列が設定されていた。

この時、ユーザがメッセージの削除命令を実行しても「メッセージが削除されない」という不具合が起きます。なぜなら、メッセージの削除を示す”delete”に対する「else ifのブロック」が、書かれていないからです。

しかしログファイルには、
無効な文字列”delete”が、action変数に設定されている
という自作のエラーが出力されます。このエラー情報より、Javaソースの中から「この不具合の原因部分」を探しやすいでしょう。

※この記事は、2003年6月当時の記事になります。

コンピューター
この記事をシェアする

グッズ・メモランダム