try-catchブロック内で動作するようにResponse.Redirectをしないように何かがありますか?

StackOverflow https://stackoverflow.com/questions/1063625

質問

私はresponse.redirect()でいくつかの奇妙なエラーを持って、私はResponse.Redirect()はそれで正常に働いていたコードのブロックを囲むたのtry-catch のブロックを削除したときにプロジェクトが...すべてで構築されませんでした..

ただ、これは既知の問題か何かであるかどうかを知りたい...

役に立ちましたか?

他のヒント

マーティンが指摘するように、のResponse.RedirectはThreadAbortExceptionのをスローします。解決策は、例外を再スローすることです。

try  
{
   Response.Redirect(...);
}
catch(ThreadAbortException)
{
   throw; // EDIT: apparently this is not required :-)
}
catch(Exception e)
{
  // Catch other exceptions
}

あなたは、tryブロック内で宣言された変数を参照している可能性があります。

例えば、以下のコードが無効である

try
{
  var b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
  if (b)
  {
    Response.Redirect("somewhere else");
  }
}

あなたは、try-catchブロックの外側にBの宣言を移動する必要があります。

var b = false;
try
{
  b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
  if (b)
  {
    Response.Redirect("somewhere else");
  }
}

私はここに任意の既知の問題があるとは思いません。

リダイレクトが空気中にキャッチを離れる(例えば)別の.aspxの、(それに戻って来ることができない)に現在のコントロールを離れるので、

あなたは、単にtry / catchブロック内でリダイレクトを()で行うことはできません。

EDIT:一方で、私はこのすべてを持っていたかもしれない後方考え出し。申し訳ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top