0Pricing
C# Academy · レッスン

簡単な診断:例外とガードチェック

想定される無効な入力にはガードチェックを適用し、例外的な状態には例外をスローします。try/catchでエラーを適切に処理します。

「簡単な診断:例外とガードチェック」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

診断の概要

目標:想定される問題にはガードチェックを使用し、稀で重大な問題には例外を使用します。

ガードチェックの例

ガードチェックは、一般的な無効な入力に対して例外をスローせず、ステータスを返します。

using System;

public class Program
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;
      return false; // guard check fails
    }
    result = a / b;
    return true;
  }

  public static void Main(string[] args)
  {
    int r;
    bool ok = TryDivide(10, 0, out r);
    Console.WriteLine("ok=" + ok + " result=" + r);
  }
}

例外の例

例外は処理されない限り実行を停止します。予期しない状態や重大な状態に使用します。

using System;

public class Program
{
  public static int PriceWithTax(int price, int ratePercent)
  {
    if (price < 0)
    {
      throw new ArgumentOutOfRangeException("price");
    }
    if (ratePercent < 0 || ratePercent > 100)
    {
      throw new ArgumentOutOfRangeException("ratePercent");
    }
    return price + (price * ratePercent / 100);
  }

  public static void Main(string[] args)
  {
    try
    {
      int total = PriceWithTax(100, 20);
      Console.WriteLine("Total=" + total);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: " + ex.Message);
    }
  }
}

チェックと例外の組み合わせ

アプローチを組み合わせます。通常の検証にはガードチェックを使用し、不正な状態には例外を使用します。

using System;

public class Program
{
  public static bool TryParsePrice(string text, out int value)
  {
    return int.TryParse(text, out value); // guard check
  }

  public static int GetDiscount(int code)
  {
    if (code < 0) throw new ArgumentException("Invalid code"); // exception
    return 10;
  }

  public static void Main(string[] args)
  {
    int v;
    if (TryParsePrice("123", out v))
    {
      Console.WriteLine("Parsed " + v);
    }

    try
    {
      int d = GetDiscount(-1);
      Console.WriteLine("Discount=" + d);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: " + ex.Message);
    }
  }
}

try/catch の例

try/catchを使用して例外を処理し、プログラムの実行を継続します。

using System;

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      int x = 10;
      int y = 0;
      int z = x / y; // will throw DivideByZeroException
      Console.WriteLine(z);
    }
    catch (DivideByZeroException ex)
    {
      Console.WriteLine("Cannot divide by zero: " + ex.Message);
    }
  }
}

ヒント

ヒント:

  • 一般的なケースでは、ガードチェックによって安全なデフォルト値を返します。
  • 例外はまれに発生し、意味のあるものであるべきです。
  • 処理できる例外だけを捕捉します。

ガードチェックと例外

確認:例外をスローするよりもガードチェックを優先すべきなのは、どのような場合ですか?

まとめ

まとめ:一般的な無効な入力にはガードチェックを使用し、例外的な状態には例外をスローします。復旧できる場合は、try/catch で処理します。

よくある質問

「簡単な診断:例外とガードチェック」レッスンは無料ですか?

はい。「簡単な診断:例外とガードチェック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「簡単な診断:例外とガードチェック」で何を学びますか?

想定される無効な入力にはガードチェックを適用し、例外的な状態には例外をスローします。try/catchでエラーを適切に処理します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。

「簡単な診断:例外とガードチェック」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if/else、switch(従来型)、ループ:for、while、do、foreach
  2. break/continue、goto(使用を避ける)、スコープ、例外とガードチェック
  3. 簡単な診断:例外とガードチェック
← C# Academyに戻る