複数のCatchブロック
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部。レッスン 25/66。
複数の catch ブロックを使用すると、例外の種類ごとに専用のコードで、異なる種類の例外を処理できます。
基本的な try ブロックから始めます:
try
{
int number = int.Parse("abc");
}
特定の例外に対する catch ブロックを追加します。
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
異なる例外を処理するために、複数のcatchブロックを追加できます。
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
最初に一致する catch ブロックが実行されます。catch ブロックは、最も具体的な例外型から最も一般的な例外型の順に並べてください。
チャレンジ
簡単DivideNumbersという名前のメソッドを作成し、2つの文字列パラメーターを受け取るようにします。
numeratorStr:分子を表す文字列denominatorStr:分母を表す文字列
このメソッドは次の処理を行う必要があります。
- 両方の文字列を整数に解析する
- 分子を分母で割る
- 結果を整数として返す
- FormatExceptionを処理し、"Invalid format"を出力して0を返す
- DivideByZeroExceptionを処理し、"Cannot divide by zero"を出力して0を返す
- その他の例外を、"An error occurred"を出力して0を返す一般的なcatchブロックで処理する
自分で試してみよう
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// ここにコードを書いてください
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ