時には、if節による例外処理
Cから6までは、あなたは
これを考えてください-かなり役に立たない、私は認めなければなりません-例外タイプ
かどうかを別のメッセージを印刷する場合は
こうすることができます.
それがどこだ
つの別個を作成するために使用することができます
OK、ランダムな例外の例は少しです.役に立たない?
実際の例を見ましょう:HTTP呼び出しに失敗した場合に異なるHTTPステータスコードを扱います.
次のスニペットでは、指定されたステータスコード(私の場合は506)を返すエンドポイントを呼び出します.
全く面白い、uh?😉
もっと読むには、あなたはthe official documentation , それほど多くないとしても.
ハッピーコーディング!
🐧
when
例外を扱う前に条件を指定するキーワード.これを考えてください-かなり役に立たない、私は認めなければなりません-例外タイプ
public class RandomException : System.Exception
{
public int Value { get; }
public RandomException()
{
Value = (new Random()).Next();
}
}
この例外型はValue
例外がスローされたときにランダムな値が設定されているプロパティ.かどうかを別のメッセージを印刷する場合は
Value
プロパティは奇妙ですか?こうすることができます.
try
{
throw new RandomException();
}
catch (RandomException re)
{
if(re.Value % 2 == 0)
Console.WriteLine("Exception with even value");
else
Console.WriteLine("Exception with odd value");
}
しかし、まあ、あなたはcatch
ブロック可能な限り簡単です.それがどこだ
when
キーワードは便利です.時分割
つの別個を作成するために使用することができます
catch
ブロック、それらの1つは、最もきれいな方法で彼らのケースを扱います.try
{
throw new RandomException();
}
catch (RandomException re) when (re.Value % 2 == 0)
{
Console.WriteLine("Exception with even value");
}
catch (RandomException re)
{
Console.WriteLine("Exception with odd value");
}
あなたはwhen
キーワードとして、条件付きのキーワードを指定します.実際、状態はValue
プロパティRandomException
インスタンス.実際の使用法: HTTPレスポンスエラー
OK、ランダムな例外の例は少しです.役に立たない?
実際の例を見ましょう:HTTP呼び出しに失敗した場合に異なるHTTPステータスコードを扱います.
次のスニペットでは、指定されたステータスコード(私の場合は506)を返すエンドポイントを呼び出します.
try
{
var endpoint = "https://mock.codes/506";
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(endpoint);
response.EnsureSuccessStatusCode();
}
catch (HttpRequestException ex) when (ex.StatusCode == (HttpStatusCode)506)
{
Console.WriteLine("Handle 506: Variant also negotiates");
}
catch (HttpRequestException ex)
{
Console.WriteLine("Handle another status code");
}
レスポンスが成功していない場合response.EnsureSuccessStatusCode()
型の例外をスローするHttpRequestException
. スローされた例外には、返されたステータスコードに関する情報が含まれていますcatch
使用ブロックwhen (ex.StatusCode == (HttpStatusCode)506)
.全く面白い、uh?😉
もっと読むには、あなたはthe official documentation , それほど多くないとしても.
ハッピーコーディング!
🐧
Reference
この問題について(時には、if節による例外処理), 我々は、より多くの情報をここで見つけました https://dev.to/bellons91/c-tip-exception-handling-with-when-clause-38ceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol