C#で例外に基づいてエラーステータスコードを返す方法


  1. 例外処理とエラーステータスコードの関係を理解する: C#では、例外がスローされた場合、通常は例外がキャッチされ、適切なエラーハンドリングが行われます。エラーステータスコードは、エラーの種類や重大度を示すために使用されます。

  2. HttpStatusCode列挙型の使用: C#には、HTTPステータスコードを表すためのHttpStatusCode列挙型があります。この列挙型は、一般的なHTTPステータスコード(例: 200、404、500など)を定義しています。

    例:

    try
    {
       // 例外が発生する可能性のあるコード
    }
    catch (Exception ex)
    {
       if (ex is FileNotFoundException)
       {
           return HttpStatusCode.NotFound;
       }
       else if (ex is UnauthorizedAccessException)
       {
           return HttpStatusCode.Unauthorized;
       }
       else
       {
           return HttpStatusCode.InternalServerError;
       }
    }

    この例では、FileNotFoundExceptionがスローされた場合は「NotFound(404)」、UnauthorizedAccessExceptionがスローされた場合は「Unauthorized(401)」、それ以外の例外がスローされた場合は「InternalServerError(500)」を返します。

  3. 自定义のエラーステータスコードの使用: HttpStatusCode列挙型にはすべてのエラーステータスコードが含まれているわけではありません。場合によっては、独自のエラーステータスコードを定義する必要があります。

    例:

    public enum CustomStatusCode
    {
       DatabaseError = 520,
       InvalidInput = 400
    }
    try
    {
       // 例外が発生する可能性のあるコード
    }
    catch (Exception ex)
    {
       if (ex is DatabaseException)
       {
           return (int)CustomStatusCode.DatabaseError;
       }
       else if (ex is InvalidInputException)
       {
           return (int)CustomStatusCode.InvalidInput;
       }
       else
       {
           return HttpStatusCode.InternalServerError;
       }
    }

    この例では、DatabaseExceptionがスローされた場合は「DatabaseError(520)」、InvalidInputExceptionがスローされた場合は「InvalidInput(400)」を返します。

これらの方法を使用することで、C#で例外に基づいて適切なエラーステータスコードを返すことができます。適切なエラーステータスコードを返すことは、APIやウェブアプリケーションの動作を改善し、デバッグやエラートラッキングを容易にする重要な要素です。