ナビゲーション リンクのスキップトップページ > C#プログラミング > ch2-3-1 例外を処理してスキルアップ
▼ ch2-3-1 例外を処理してスキルアップ ▼

  C#では例外(Exception)がネイティブサポートされています。例外は言うなればエラーの事でSystemExceptionから発生する定義済みのCLR例外クラスとApplicationExceptionから発生するユーザ定義のアプリケーション例外クラスに大別されます。前途は些かくどい表現ですが、例外の内容自体は大変簡単であり役立つものです。

  まず最初のSystemExceptionから発生する例外とはオーバーフローやFile not foundなどの予期できない自体が発生したときにCLRからスローされるものです。この存在により技巧的なコーディングを行うことなく、プログラムの暴走や強制終了の回数を減少させることができます。

  一方のApplicationExceptionから発生する例外は致命的ではないアプリケーションエラーをスローする際に用い、CLRではなく、ユーザプログラムからスローされます。これはアプリケーション独自の例外とシステム(CLR)例外を区別するために利用されます。

1: 選択した商品の概要をCSV化

♣ SystemException:FormatExceptionでの例

【SystemException:FormatExceptionでの例】
using System;
class TEST
{
    static void Main()
    {
        try
        {
                string str = "string";
                int a = int.Parse(str);
                //↑文字をint型にしようとしています。
        }
        catch(FormatException)
        {
                Console.WriteLine("例外発生");
        }
    }
}
// 文字列を数値型のintに変換することは出来ないので例外が発生します。

♣ ApplicationException:カスタム例外をスローさせる

static void Main()
{
    try
    {
            throw new ApplicationException();
    }
    catch(ApplicationException e)
    {
            Console.WriteLine(e.ToString);
    }
}
// 以上の記述でカスタム例外をスローすることが可能です。
// catchブロック中に "AplicationException e" と定義し詳しい情報を出力させています。


  これらの例外は全て名前空間SystemのSystem.Exceptionクラスから発生しています。したがってcatchにSystem.Exceptionクラスを定義すると余すところ無く全ての例外をキャッチすることが可能です。例えば特定の例外のみ特別操作を施し、他の例外は全てSystem.Exceptionクラスでキャッチし共通の処理をさせる事も可能です。

  なお、このような操作を行う場合には、FormatExceptionなど下位クラスをSystem.Exceptionなどの上位クラスより先方に記述する必要があります。これは上位クラスを先に記述してしまうと上位クラスが例外を先にキャッチしてしまい、後に記述された下位クラスが例外をキャッチすることが出来ないため、コンパイルエラーとなってしまうからです。

  最後にスローされた例外を無視すると面倒な事になることを憶えておきましょう。.NETの例外は常に無視することが出来ずスローされる例外を無視すると、ハンドルされていない例外が発生したことを知らせるダイアログボックスが出現してデバックまたは強制終了をユーザに対して促し、ユーザに負担を負わせる事になってしまいます。

Continue
ナビゲーション リンクのスキップトップページ > C#プログラミング > ch2-3-1 例外を処理してスキルアップ

2008年ですね。[1]
♥ 2008年01月01日 00:00:00

自由なスレ[3]
♥ 2007年09月22日 20:51:58

2007年ですね。[1]
♥ 2007年01月01日 00:00:00

こみゅぷらす発足[1]
♥ 2006年12月01日 12:01:23

TechED2006 日記[5]
♥ 2006年09月11日 18:44:51


RSS : FooPah!の更新情報
RSS : 掲示板全体の投稿情報
Copyright(C)2001-2008 FooPah!, All rights reserved.