目次＞第3章 サンプルアプリケーション構築 > 3.6 エラー画面遷移

# 3.6 エラー画面遷移

## 概要

本節では、Server Frameworkが提供するエラー画面遷移機能を用いて、システムで例外が発生した場合に、例外の種類に応じてエラー画面に遷移させる方法を学習する。
Server Frameworkがスローする画面遷移エラー例外や、セッションタイムアウト例外などは、エラー画面遷移機能を用いてエラー画面に遷移させる。詳細は、機能説明書『WA-04 エラー画面遷移機能』を参照のこと。
本節では、メニュー画面の「例外をスローする」ボタンのクリックイベントでApplicationExceptionをスローし、エラー画面遷移機能を用いてエラー画面に遷移させる演習を行う。

### 動作イメージ

図3.6-1 動作イメージ

- 対象画面
  - メニュー画面（MenuForm.aspx）
- 処理概要
  1. （クライアント）メニュー画面で「例外をスローする」ボタンを押下する。
  2. （サーバ）MenuForm.aspx内で例外をスローする。
  3. （サーバ）エラー画面遷移機能が実行され、エラー画面遷移設定ファイルの定義をもとに、例外に対応するエラー画面へ遷移する。
  4. （クライアント）エラー画面を表示する。

## 作業手順

- 作成イメージ
  1. メニュー画面のイベントの実装
  2. 画面遷移設定ファイルの設定
  3. エラー画面遷移設定ファイルの設定

### 1. メニュー画面のイベントの実装

#### 1.1 「例外をスローする」ボタンのクリックイベント

メニュー画面（MenuForm.aspx）に配置した「例外をスローする」ボタンのクリックイベントを追加する。
図3.6-2 「例外をスローする」ボタンのクリックイベントの追加

#### 1.2. 「例外をスローする」ボタンのクリックイベントの実装

クリックイベントにApplicationExceptionをスローするロジックを実装する。

MenuForm.aspx.cs

    /// <summary>
    /// ApplicationException例外をスローする。
    /// </summary>
    /// <param name="sender">イベントのソース。</param>
    /// <param name="e">イベントデータを格納している<see cref="EventArgs"/>。</param>
    protected void ButtonException_Click(object sender, EventArgs e)
    {
        throw new ApplicationException();
    }

### 2. 画面遷移設定ファイルの設定

画面遷移設定ファイル（Config\PageConfiguration.config）に、アプリケーションエラー画面（ExceptionForm.aspx）の定義を追加する。画面遷移IDには"ExceptionForm"を指定する。

      <!-- アプリケーションエラー画面 -->
      <page name="ExceptionForm" path="/Form/ExceptionForm.aspx" />

設定完了後の画面遷移設定ファイルを以下に記す。

PageConfiguration.config

    <?xml version="1.0" encoding="utf-8" ?>
    <!-- ページ設定ファイルの設定 -->
    <pageConfiguration xmlns="http://www.terasoluna.jp/schema/PageSchema.xsd">
      <!-- 計算画面 -->
      <page name="CalcForm" path="/Form/CalcForm.aspx" />
      <!-- 商品選択画面 -->
      <page name="SelectItemForm" path="/Form/SelectItemForm.aspx" />
      <!-- 商品確認画面 -->
      <page name="ConfirmItemForm" path="/Form/ConfirmItemForm.aspx" />
      <!-- 商品確定画面 -->
      <page name="CompleteItemForm" path="/Form/CompleteItemForm.aspx" />
      <!-- ログオン画面 -->
      <page name="LogonForm" path="/Form/LogonForm.aspx" />
      <!-- メニュー画面 -->
      <page name="MenuForm" path="/Form/MenuForm.aspx" />
      <!-- アプリケーションエラー画面 -->
      <page name="ExceptionForm" path="/Form/ExceptionForm.aspx" />
    </pageConfiguration>

### 3. エラー画面遷移設定ファイルの設定

ポイント!

エラー画面遷移設定ファイル（Config\ExceptionTransition.config）に、 ApplicationException発生時の遷移先IDを指定する。遷移先IDには2. 画面遷移設定ファイルの設定で指定した"ExceptionForm"を指定する。

ExceptionTransition.config

    <?xml version="1.0" encoding="utf-8"?>
    <!--エラー画面遷移設定ファイルの設定-->
    <exceptionTransitionConfiguration xmlns="http://www.terasoluna.jp/schema/ExceptionTransitionSchema.xsd">

      <!-- ApplicationException発生時の遷移先を指定する -->
      <exceptionTransition exceptionType="System.ApplicationException" nextPage="ExceptionForm"/>

      <!--
      <exceptionTransition exceptionType="System.Web.HttpException" nextPage="Error1" />
      <exceptionTransition exceptionType="TERASOLUNA.Fw.Web.HttpModule.SessionTimeoutException" nextPage="Error1"/>
      <exceptionTransition exceptionType="TERASOLUNA.Fw.Web.HttpModule.InvalidTransitionException" nextPage="Error2"/>
      -->
    </exceptionTransitionConfiguration>

## 動作確認

1. サーバアプリケーションを起動する(TutorialServerWebプロジェクトの発行)。
2. ブラウザのアドレス欄のURLに「http://localhost/tutorialServerWeb/Form/LogonForm.aspx」を入力し、移動ボタンをクリックし、正常にログオン画面が表示されることを確認する。
3. ログオン画面でユーザID "tera"、パスワード "soluna" と入力し、「ログオン」ボタンを押下する。
4. メニュー画面の「例外をスローする」ボタンを押下する。
5. アプリケーション例外画面に遷移することを確認する。

図3.6-3 ログオン画面⇒メニュー画面

次節：3.7 画面遷移保証