この章では、例外処理の使い方を学びます。

例外処理は、プログラムの実行中に発生したエラーを処理するための仕組みです。エラー処理のコードを記述することでプログラムの保守性が向上します。
「C#基礎講座」の第10章です。この講座の詳細については以下から確認できます。
全てのサンプルプログラムのダウンロードは0章でダウンロードできます。


例外処理とは?
例外処理とは、プログラムの実行中に発生したエラーや例外を処理するための仕組みです。
これによりプログラムの実行を続行し、エラーが発生した場合にも正常に動作を続けることができます。
例外処理をキャッチする「try-catch」の使い方
「try-catch」は、例外処理を実装するための方法の一つです。
tryブロック内で発生した例外は、「catch」ブロックで処理されます。
try
{
int a = 10;
int b = 0;
int c = a / b;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
出力:Error: Attempted to divide by zero.
上記のサンプルでは、0で除算をしようとして例外が発生し、それをtry-catchで発生した例外に対してエラーメッセージを表示しています。
例外に関わらず必ず処理を実行する「finally」
「try-catch」文には「finally」ブロックというものがあります。
finallyブロックは、tryブロック内で発生した例外の有無に関わらず、必ず実行されるブロックです。
finallyブロックは、リソースの解放やクリーンアップなど、例外が発生した場合にも必ず行いたい処理を記述するために使用されます。
try
{
int a = 10;
int b = 0;
int c = a / b;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
Console.WriteLine("Finally block is executed.");
}
出力:
Error: Attempted to divide by zero.
Finally block is executed.
上記の例では、tryブロック内でDivideByZeroExceptionが発生した場合にcatchブロックが実行され、その後finallyブロックが実行されます。DivideByZeroExceptionは、整数またはDecimal値を 0 で除算しようとするとスローされる例外です。
これにより、例外が発生した場合でも必ず実行したい処理を記述することができ、プログラムの保守性が向上します。
意図して例外を発生させるthrow命令
throw命令は、プログラマが意図して例外を発生させるために使用されます。
throw命令は、throw キーワードに続けて、例外オブジェクトを渡します。
以下は、throw命令の使用例です。
throw new Exception("Error occurred!");
上記の例では、新しいExceptionオブジェクトを作成し、”Error occurred!”というエラーメッセージを渡しています。 これにより、”Error occurred!”というエラーメッセージを持つExceptionがスローされます。
例外の種類
例外には様々な種類があります。主なものには、以下のようなものがあります。
例外 | 説明 |
---|---|
ArgumentException | 引数が不正な場合にスローされる例外 |
NullReferenceException | nullを参照しようとした場合にスロー |
IndexOutOfRangeException | 配列の範囲外を参照しようとした場合にスローされる例外 |
DivideByZeroException | 0で割ろうとした場合にスローされる例外 |
FileNotFoundException | ファイルが存在しない場合にスローされる例外 |
InvalidOperationException | 無効な操作が実行された場合にスローされる例外 |
Exception | 上記の例外のスーパークラスで、その他の様々な例外の基底クラス |
例外が発生した場合は、発生した例外に対応したcatchブロックを使用することで、適切な処理を行うことができます。 例外の種類に応じて、処理を分岐することで、より細かいエラー処理を行うことができます。
解いてみよう!例外処理クイズ
- 例外処理によって得られるメリットは何ですか?(複数選択)
- プログラムの実行を続行し、エラーが発生した場合にも正常に動作を続けることができます。
- エラーが発生した原因を特定しやすくなります。
- エラー処理に特化したコードを記述するため、プログラムの保守性が向上します。
解答
答え: 1, 2, 3 (全て)
2. try catch文を使用した場合に、catchブロックが実行される条件は何ですか?
- tryブロック内で例外が発生した場合
- tryブロック内でreturn文が実行された場合
- tryブロック内でbreak文が実行された場合
解答
答え: 1. tryブロック内で例外が発生した場合
3. finallyブロックはどのような場合に実行されますか?(複数選択)
- tryブロック内で例外が発生した場合
- tryブロック内でreturn文が実行された場合
- tryブロック内でbreak文が実行された場合
解答
答え: 1 , 2
try-catch-finallyブロックは例外が発生した場合に、tryブロック内でcatchブロックが実行され、その後finallyブロックが実行されることになります。
tryブロック内でreturn文が実行された場合も、finallyブロックが実行されることになります。
この章のまとめ
「例外処理をマスターする」では以下の内容を学びました。
- 例外処理は、プログラムの実行中に発生したエラーを処理するための仕組み。
- 例外処理によっては、プログラムの実行を続行し、エラーが発生した場合にも正常に動作を続けることができる。
- try-catchブロックを使用して例外を処理し、throw命令を使用して手動で例外を発生させることができます。
例外処理はプログラムの安定性を高めるために欠かせない要素です。try-catch-finally文とthrow命令を使用することで、発生した例外を正確に処理することができ、プログラムの安定性を高めることができます。



例外処理は、プログラムを保守する上で重要な概念であると感じました。また、throw命令を使用することで、プログラマが意図的にエラーを発生させることができるのは非常に便利だと思いました。



例外処理は、プログラムを保守する上で重要な概念です。適切な例外処理を行うことで、プログラムをクラッシュさせないようにすることができます。
また、throw命令を使用することで、プログラマが意図的にエラーを発生させることができるので、プログラムのデバッグやテストにも役立ちます。
次のチャプター
次章では、「オブジェクト指向 応用編」について学びます。



