ASP.NETでアプリケーションレベルのエラー処理を行う方法
ASP.NETでアプリケーションを開発する場合、例外処理を実装する必要があります。例外処理の実装を怠るとエラー発生後、ユーザーにとってよくわからない画面に切り替わり、画面を操作することができなくなってしまいます。これを防ぐためにも例外処理の実装は忘れずに行いたいところです。
- システム
エンジニア - 例外処理って忘れることが多々あります。以前、実装していなくてユーザーに迷惑をかけてしまいました。忘れないようにするためのコツとかありますか?
- プロジェクト
リーダー - コツとまではいえないですが、アプリケーションレベルで例外処理を行う方法もあります。エラーの防衛線は何重にもはっておきたいですよね。
ASP.NETの例外処理の概要
C#開発者なら例外処理といえば、まず思い浮かべるのはtry~catch~finallyではないでしょうか。これを実装することで予期せぬエラーを捕捉し、画面にエラー内容を表示させてユーザーやアプリケーション運用者に知らせることができます。
この処理はコードレベルでの例外処理です。もちろんこの実装だけでも問題はありませんが、どうしても捕捉しきれいない箇所が出てきます。エラーはアプリケーションに付き物です。そういった捕捉しきれないエラーをカバーするのがアプリケーションレベルでの例外処理の役割となります。
アプリケーションレベルでのエラー処理のサンプルソース
global.aspxに例外エラーを捕捉するコーディングを行います。以下のサンプルソースではApplication_Errorの箇所を新たに追加しました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System;
using System.Web;
using System.Web.Optimization;
using System.Web.Routing;
namespace WebApplication14
{
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// アプリケーションのスタートアップで実行するコードです
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
if (exc is HttpUnhandledException)
{
// Pass the error on to the error page.
Server.Transfer("ErrorPage.aspx?handler=Application_Error%20-%20Global.asax", true);
}
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ErrorPage.aspx.cs" Inherits="WebApplication14.ErrorPage_aspx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>Error</div>
</form>
</body>
</html>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System;
namespace WebApplication14
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void btn_click(object sender, EventArgs e)
{
//ゼロ割エラーを起こします
int test_zero = 0;
int a = 5 / test_zero;
}
}
}
|
実行画面
ここでボタンを押下します。
エラー画面
エラー画面が表示されました。
- システム
エンジニア - 例外処理ってtry~catch~finallyしか知らなかったです!これからはアプリケーションレベルでの例外処理の実装もして、エラーの防衛線を二重三重に張っておくことを心がけます。
- プロジェクト
リーダー - アプリケーションを開発するにはエラーはつきものですが、エラーを防ぐ努力は積極的に行いましょう。予期せぬエラーが発生すれば、ユーザーに迷惑をかけるのはもちろん、アプリケーションに対する信用も失う恐れがありますからね。
アプリケーションレベルでの例外処理を実装して品質を高めましょう
システムの設計書に、ここで例外処理を実装しましょうと記載されていることはほとんどありません。開発者自らが例外処理を考えて実装する必要があります。実装されていなければ開発リーダーの方にでも報告し、開発者目線からアプリケーションの品質を高めるようにしていきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
ASP.NET新着案件New Job
-
Web受注システム運用保守/VB.NET/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
Web受注システム開発のテスター/VB.NET/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅) -
営業フロントシステム開発のテスター/ASP.NET/東京都江東区/【WEB面談可】
月給25万~35万円東京都江東区(木場駅) -
営業フロントシステム開発/ASP.NET/東京都江東区/【WEB面談可】
月給35万~41万円東京都江東区(木場駅) -
Web受注システム開発/VB.NET/東京都港区/【WEB面談可】
月給45万~60万円東京都港区(品川駅)