SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

エラー処理をパターンにはめよう

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

独自のエラーページの表示

 ASP.NETでは例外が発生すると、俗にYSOD(Yellow Screen Of Death)と呼ばれる標準のエラーページを表示します。このエラーページには例外の発生元を表すスタックトレースや、詳細なエラーメッセージが表示されます。

 しかし、一般のユーザーにそのような情報を見せることはセキュリティの観点からも望ましくありません。

 ASP.NETでは「カスタムエラーページ」という仕組みを使用し、独自のエラーページを表示することができます。カスタムエラーページは、致命的なエラーが発生したことを表す簡単なメッセージとシステム管理者への連絡を促すメッセージが記載された静的Webページとして作るのが望ましいです。

 カスタムエラーページを表示するには、Web構成ファイル(Web.config)で以下のように設定します。

[リスト5]カスタムエラーページを表示するWeb.configの設定
<configuration>
  <system.web>
    <!-- (1) -->
    <customErrors defaultRedirect="~/ErrorPage.html"
                  mode="On" />  <!-- (2) -->
  </system.web>
</configuration>
(1) エラーページのURLを指定する

 configuration-system.webセクションのcustomErrors要素で、defaultRedirect属性にカスタムエラーページのURLを指定します。

(2) カスタムエラーページを必ず表示させる

 同じくcustomErrors要素でmode属性に"On"を設定します。

 これにより、システムエラー時は常にカスタムエラーページが表示されるようになります。

 なお、標準のエラーページを常に表示させるには"Off"、ローカルマシンで動かした場合は標準のエラーページ、リモートサーバーで動かした場合はカスタムエラーページが表示されるようにするには"RemoteOnly"を指定します(既定値はRemoteOnly)。

 それぞれの値は、次のように使い分けます。

  • 個々の開発者によるPCでの作業中は既定値の"RemoteOnly"のままとし、標準エラーページを開発者が見られるようにする。
  • テストサーバーに配置したテスト環境では"Off"にし、テスターに標準エラーページを見せ、開発者に知らせてもらう。
  • 実運用環境では"On"にし、エンドユーザーには標準エラーページを見せない。

まとめ

 ASP.NET Webフォームアプリケーションでのエラー処理のポイントは、以下のとおりです。

  • エラー処理をすべてイベントハンドラーに書くのはアンチパターン。
  • エラーは次のように分類できる。
    • 単体入力エラー
    • 突合せエラー
    • システムエラー
  • エラーの種類ごとに適切な方法で対処する。
  • 単体入力エラーは検証サーバーコントロールを用いてチェックする。
  • 突合せエラーはロジック層でチェックを行い戻り値でチェック結果を返す。プレゼンテーション層では返されたチェック結果を元にエラーメッセージを表示する。
  • システムエラーは集約例外ハンドラーでまとめて対処する。そして、カスタムエラーページを使用し、エラーの詳細情報をエンドユーザーには見せないようにする。
  • エラー処理は単体入力エラー→突合せエラーの順で行う。前段階でエラーがないときのみ以後の処理を行うことで、入力値の妥当性を確保して処理を進めることができる。

 さて、次回はASP.NET Webフォームアプリケーションにおける「状態管理」について、ケースごとにどのような状態管理を行えばよいのか紹介する予定です。次回もお楽しみに。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高野 将(タカノ ショウ)

<個人紹介>新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C# 2017対応』(日経BP社、2017)など。<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6553 2012/05/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング