C#:練習曲、パート3

前のパートでは 、3つの本質的に異なるソリューションが提案されました。

今日は、ASP.NETドメインからの新しい謎です。 前のものとの主な違いは、実際の状況で私がそれに出くわしたことであり、私は問題が何であるかを理解するために時間を費やす必要がありました。

そのため、 Test.aspxページにコードがあります。



protected void Page_Load( object sender, EventArgs e)<br>{<br> try <br> {<br> if ( object .ReferenceEquals(Request[ "ID" ], "aaa" ))<br> {<br> Response.Redirect( "~/PageA.aspx" );<br> }<br> else if (Request[ "ID" ] == "bbb" )<br> {<br> Response.Redirect( "~/PageB.aspx" );<br> }<br> else <br> {<br> int i = int .Parse(Request[ "ID" ]);<br> object boxedI = i;<br> if ((i > 5) && (( long )boxedI == 10))<br> {<br> Response.Redirect( "~/Page10.aspx" );<br> }<br> Response.Redirect( "~/PageDafault.aspx" );<br> }<br> } <br> catch (Exception)<br> {<br> Response.Redirect( "~/Error.aspx" );<br> }<br>}<br> <br> * This source code was highlighted with Source Code Highlighter .

次の4つのリンクもあります。
  1. Test.aspx?ID = aaa
  2. Test.aspx?ID = bbb
  3. Test.aspx?ID = 4
  4. Test.aspx?ID = 10


UPD正解は次のとおりです。
「トロイカ」への質問:彼らはそれぞれどこへ導くのでしょうか? >>> リンクはError.aspx <<<につながります

カルテットへの質問:なぜ正確に? >>> Response.Redirectは、このためにThreadAbortExceptionをスローすることにより、ページコードの実行フローを中断します。 catch(Exception)それをキャッチし、 Response.Redirectで再びスローしますが、別のページにリダイレクトします <<<

「5」への質問:状況を修正するためにどのように提案しますか? >>> とりわけ 、私はwdkメソッドが好きですcatch(Exception)前に目的のタイプの例外をキャッチするだけです: habrahabr.ru/blogs/net/77154/#comment_2246114このコードは単純ですが、必要なことを正確に実行します。ページ。 ThreadAbortException catch最後にスローされるため、 tryブロックや他のページイベントの外部で不要なコードが実行されることはありません。 そして、ソリューションhabrahabr.ru/blogs/net/77154/#comment_2245598はそのような実装につながるだけなので、 <<<

私が選択したなぞなぞ形式は、.NETブログに完全に適していないようですので、私のブログで次のなぞなぞを探してください:)

みんなありがとう!

Source: https://habr.com/ru/post/J77154/


All Articles