トレーニング
モジュール
C# コンソール アプリケーションで例外処理を実装する - Training
このモジュールでは、C# コンソール アプリケーションでの例外の使用と例外処理プロセスについて説明します。 ハンズオン アクティビティは、さまざまなコーディング シナリオで例外処理パターンを実装する経験を提供します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
アプリケーションは、実行中に発生するエラーを一貫した方法で処理できなければなりません。 .NET では、一貫した方法でアプリケーションにエラーを通知するためのモデルが用意されています。 .NET 操作では、例外をスローすることによって障害の発生を示します。
例外とは、プログラムを実行することによって発生するエラー状態または予期しない動作のことです。 例外がスローされる原因として、コードまたは呼び出したコード (たとえば共有ライブラリ) 内に障害がある、オペレーティング システム リソースを使用できない、予期しない状態 (たとえば検証できないコード) をランタイムが検出したなどがあります。 アプリケーションは、他の状態からではなく、これらの状態のうちのいくつかから回復できます。 ほとんどのアプリケーション例外から回復できますが、ほとんどのランタイム例外からは回復できません。
.NET では、例外は、System.Exception クラスから継承されるオブジェクトです。 例外は問題が発生したコード領域からスローされます。 例外は、アプリケーションが処理するかプログラムが終了するまで、スタックに渡されます。
言語のエラー処理モデルは従来、エラーを検出してそれに対応したハンドラーを見つける言語固有の方法か、オペレーティング システムが備えているエラー処理機構のいずれかを使用していました。 .NET が例外処理を実装する方法は、次の利点をもたらします。
例外のスローと処理は、.NET プログラミング言語では同じように機能します。
例外を処理するための特定の言語構文を必要とせず、各言語が独自の構文を定義できます。
例外は、プロセス間、さらにはコンピューターの境界を越えてスローできます。
プログラムの信頼性を高めるための例外処理コードをアプリケーションに追加できます。
例外には、リターン コードなどの他のエラー通知メソッドに優る利点があります。 例外がスローされ、それを処理しないと、ランタイムによってアプリケーションが終了されるため、エラーが見過ごされることはありません。 無効な値は、エラーのリターン コードの確認に失敗したコードの結果として、システムを経由した伝達を続行しません。
次の表は、一般的な例外とそれらの原因の例をいくつか示しています。
例外の種類 | 説明 | 例 |
---|---|---|
Exception | すべての例外の基底クラスです。 | なし (この例外の派生クラスを使用)。 |
IndexOutOfRangeException | 配列のインデックスが誤っている場合にのみ、ランタイムによってスローされます。 | 次のように、配列に対して配列の有効範囲外のインデックスを付けた場合。arr[arr.Length+1] |
NullReferenceException | null オブジェクトが参照された場合にのみ、ランタイムによってスローされます。 | object o = null; o.ToString(); |
InvalidOperationException | 無効な状態の場合にメソッドによってスローされます。 | 基になるコレクションから項目を削除した後での、Enumerator.MoveNext() の呼び出しです。 |
ArgumentException | すべての引数の例外の基底クラスです。 | なし (この例外の派生クラスを使用)。 |
ArgumentNullException | null の引数を許可しないメソッドによってスローされます。 | String s = null; "Calculate".IndexOf(s); |
ArgumentOutOfRangeException | 引数が特定の範囲内にあることを検査するメソッドによってスローされます。 | String s = "string"; s.Substring(s.Length+1); |
トレーニング
モジュール
C# コンソール アプリケーションで例外処理を実装する - Training
このモジュールでは、C# コンソール アプリケーションでの例外の使用と例外処理プロセスについて説明します。 ハンズオン アクティビティは、さまざまなコーディング シナリオで例外処理パターンを実装する経験を提供します。
ドキュメント
詳細情報: Exception クラスとプロパティ
方法: catch ブロックで特定の例外を使用する - .NET
詳細情報: catch ブロックで特定の例外を使用する方法
C# の Throw ステートメントまたは Visual Basic の Throw ステートメントを使用して、.NET で明示的に例外をスローする方法について説明します。