2012-01-04 3 views
0

コマンドにTimeoutExceptionを設定しようとしていて、コードで "Command TimeoutException"が発生した場合、ブロックをキャッチしてさらにcustomerror.aspxページにリダイレクトする必要があります。 コードは次のとおりです。catch 2ブロックでTimeoutExceptionをC#とredirecをCustomErrorPage.aspxに設定する方法

try 
{ 
    command.Timeout=1; //which is in seconds for testing i have set it to one. 
    //some code here 
    // if TimeoutException occurs, it must go to following block which doesnthappen 
    //And it goes to catch 2: block..! Why is it so...? 
} 

//catch 1: 
catch (TimeoutException ex) 
{ 
    Response.Redirect("CustomError.aspx"); 

} 

//catch 2: 
catch (Exception ex) 
{ 
    Response.Redirect("CustomError.aspx"); 
} 

答えて

1

- スローされる例外の完全なタイプは何ですか? TimeoutExceptionではないかもしれませんが、Exceptionで捕捉されるでしょう。これは.NETの例外の基本型だからです。

+0

上記のようなネストされた例外は、キャッシュされるときに残りの部分は無視されます.. else if –

+0

ya私は同意します...!しかし、それはキャッチ1ブロックコードのために行くのでしょうか? TimeoutExceptionが発生しますか?私は1秒間それを設定したときにTimeoutExceptionに行く必要がありますが、失敗します...なぜですか? :-( –

+0

あなたが実際に取得する例外は、TimeoutExceptionではありません。おそらく、ある種のデータベース固有の例外です – Leon

0

データベースコマンドのタイムアウト例外をキャッチしようとしているようです。それは.netTimeout exceptionを投げるのではなく、SqlExceptionのテキストに "タイムアウトが切れました..."と表示されます。

sqlExceptionをキャッチしていないので、この場合はcatch2ブロックに移動します。

チェックアウトthisリンク。

関連する問題