- PR -

ターゲット指定の値渡し

投稿者投稿内容
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-04 09:54
こんなこと書いてあるページを見つけました。
試してませんけど。

http://studiodragoonnet.main.jp/programming/tips/ASPNET/abort.html
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-04 10:01
Jitta氏フォローありがとうございます。
同じ名前で登録すると先に登録したほうが有効になるのですね。てっきり上書きされると
思っていました。


一郎氏も書いてますがcatchの部分を↓のように変更してエラーメッセージを取得して
提示してもらえれば解決も早くなります。

catch( System.Exception ex )

この状態でex.Messageを確認してみると「スレッドを中止しようとしました」と
なっているはずです。

なので
Response.Redirect(strURL,true);

Response.Redirect(strURL,false);
に直すと例外は発生しなくなります。

便乗質問なのですが皆様はRedirectのtrue、falseをどのように使い分けていますか?
わたしは以下のように考えていますが、認識があっているのか自信がなくて

・同一アプリケーションへのページ移動時はfalse
・違うアプリケーションや通常のhtmlページへの移動時はtrue
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-03-04 10:05
ありがとうございます。

仰る通り、Exceptionでe.GetType().Nameを見ると"ThreadAbortExcaption"となりスレッドを中止しようとしましたとなっています。
(この例外の場合は、通常終了としてフラグを立てればうまくいくのかな?)
コード:

try{省略}
catch(Exception e)
{
  if(e.GetType().Name == "ThreadAbortExcaption")
  {
   return true;
  }
  else return false;
}


なにか問題ありますでしょうか?

#これを書いている間に、皆様からご意見いただいてましたね。
一郎さんの教えていただいたリンク先の方法でやってみます。

[ メッセージ編集済み 編集者: BB.NK 編集日時 2004-03-04 10:09 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-04 10:26
引用:

BB.NKさんの書き込み (2004-03-04 10:05) より:
コード:
try{省略}
catch(Exception e)
{
  if(e.GetType().Name == "ThreadAbortExcaption")
  {
   return true;
  }
  else return false;
}


なにか問題ありますでしょうか?


うーん、いや、自動的に再スローされるんですから何も変わらないというか、return true の直後に再スローされて意味が無い気が…

余談ですが、型のチェックは
if(e is ThreadAbortExcaption)
の方が意味が明確だしいいと思います(今回のこの場面ではどちらにしても駄目ですが、型のチェックを行う場合の記述としての話です)。

コード:
try{省略}
catch(ThreadAbortExcaption)
catch(Exception e)
{
    省略
}


みたいに無視してやるのがまあ普通な気もしますが…

引用:

一郎さんの教えていただいたリンク先の方法でやってみます。


なんかキャッチして握りつぶしてますけど、そのことには問題は無いんですかね?状況によりそうですが…
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-04 11:09
if(e is ThreadAbortExcaption)

こんな書き方があったんですね。勉強になります。
いつもはif( e.GetType() == typeof( ThreadAbortExcaption ) )で書いてました。



[ メッセージ編集済み 編集者: ゆうじゅん 編集日時 2004-03-04 11:10 ]

スキルアップ/キャリアアップ(JOB@IT)