2012-01-04 1 views
0

Я пытаюсь установить команду TimeoutException для команды и на которой, если «Command TimeoutException» встречается в коде, он должен перейти на блокировку и далее перенаправить на страницу customerror.aspx. Кодекс:Как установить 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

В catch 2 блоке - что это полный тип исключения, которое выбрасывается? это может быть не TimeoutException, но будет пойман Exception, так как это базовый тип для исключений в .NET.

+0

Вложенное исключение, подобное тому, которое когда-либо было кешировано, остальное игнорируется больше, чем если .. else if –

+0

ya i agree ...! Но почему это не идет для блочного кода catch 1 и когда будет Исключение времени ожидания? когда я установил его в течение 1 секунды, он должен перейти в TimeoutException, но он не работает ... почему? :-( –

+0

Поскольку исключение, которое вы на самом деле получаете, это _not_ a TimeoutException - возможно, какое-то исключение для конкретной базы данных – Leon

0

Похоже, вы пытаетесь поймать исключение таймаута базы данных. Это не выбрасывает Timeout exception, а вместо этого SqlException с текстом «Истекло время ожидания ...».

Поскольку вы не поймаете sqlException, в этом случае он будет блокировать catch2.

this ссылка.

Смежные вопросы