0

緑が与えられた場合、赤を呼び出すことができる状況はありますか?

到達不能なコード スニペット

4

2 に答える 2

4

これは単体テストのカバレッジのように見えますが、メソッド自体が返されていないため、コードに到達する必要があります。ただし、使用している自動テストが実際に HTTP コンテキストに参加している場合、応答が終了すると他のコードには到達しません。

に渡すことで、応答が終了しないようにすることができfalseますRedirect()

Response.Redirect(PageRedirect, false);

ただし、これはおそらく悪い考えです。このコードが行っていることの論理的な流れを考えてみましょう。リダイレクトは応答を終了する必要があります。実行するサーバー側の処理がさらにある場合は、終了しないことを選択できますが、これは多くの場合、かなり直感的ではありません。しかし、そのサーバー側の処理が別の redirectである場合、それは何をすることになっているのでしょうか? ユーザーを 2 回リダイレクトしますか? 1 回リダイレクトして 2 回目は無視しますか? 最初のリダイレクトを無視して 2 番目のリダイレクトを実行しますか? それはかなり直感的ではありません。

応答がリダイレクトで終了するようにコードを整理することをお勧めします。技術的にはreturnfrom メソッドではありませんが、このコンテキストでは、論理的にはメソッドのように扱う必要があります。

于 2015-02-03T19:54:40.537 に答える
1

一度もない。

ほとんどのコード アナライザーは、HttpResponse.Redirect(url)が実行されなかった後はコードを理解できません。そのため、コンパイラー/アナライザーは、赤色のコードが間違っている可能性があると文句を言うでしょう。

実際にはThreadAbort、リクエスト処理コードを誤って実行することを避けるために、常に例外をスローします - HttpResponse.Redirect

于 2015-02-03T19:56:43.363 に答える