今日は、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つのリンクもあります。 - Test.aspx?ID = aaa
- Test.aspx?ID = bbb
- Test.aspx?ID = 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ブログに完全に適していないようですので、私のブログで次のなぞなぞを探してください:)
みんなありがとう!