|
▼ ch2-3-1 例外を処理してスキルアップ ▼
C#では例外(Exception)がネイティブサポートされています。例外は言うなればエラーの事でSystemExceptionから発生する定義済みのCLR例外クラスとApplicationExceptionから発生するユーザ定義のアプリケーション例外クラスに大別されます。前途は些かくどい表現ですが、例外の内容自体は大変簡単であり役立つものです。 まず最初のSystemExceptionから発生する例外とはオーバーフローやFile not foundなどの予期できない自体が発生したときにCLRからスローされるものです。この存在により技巧的なコーディングを行うことなく、プログラムの暴走や強制終了の回数を減少させることができます。 一方のApplicationExceptionから発生する例外は致命的ではないアプリケーションエラーをスローする際に用い、CLRではなく、ユーザプログラムからスローされます。これはアプリケーション独自の例外とシステム(CLR)例外を区別するために利用されます。 1: 選択した商品の概要をCSV化
♣ SystemException:FormatExceptionでの例
【SystemException:FormatExceptionでの例】
♣ ApplicationException:カスタム例外をスローさせる
static void Main()
これらの例外は全て名前空間SystemのSystem.Exceptionクラスから発生しています。したがってcatchにSystem.Exceptionクラスを定義すると余すところ無く全ての例外をキャッチすることが可能です。例えば特定の例外のみ特別操作を施し、他の例外は全てSystem.Exceptionクラスでキャッチし共通の処理をさせる事も可能です。 なお、このような操作を行う場合には、FormatExceptionなど下位クラスをSystem.Exceptionなどの上位クラスより先方に記述する必要があります。これは上位クラスを先に記述してしまうと上位クラスが例外を先にキャッチしてしまい、後に記述された下位クラスが例外をキャッチすることが出来ないため、コンパイルエラーとなってしまうからです。 最後にスローされた例外を無視すると面倒な事になることを憶えておきましょう。.NETの例外は常に無視することが出来ずスローされる例外を無視すると、ハンドルされていない例外が発生したことを知らせるダイアログボックスが出現してデバックまたは強制終了をユーザに対して促し、ユーザに負担を負わせる事になってしまいます。 Continue
|
2008年ですね。[1]
自由なスレ[3]
2007年ですね。[1]
こみゅぷらす発足[1]
TechED2006 日記[5]
|
Copyright(C)2001-2008 FooPah!, All rights reserved. | |