2009-10-19 2 views
3

다음 시나리오에서 어떻게됩니까? response.redirect 후에 작업을 포기할 것입니까?response.redirect 및 catch 블록에 넣으십시오.

아니면 내가 그것을 예외 호출 스택을 던져 main 메소드의 catch 블록에서 Response.Redirect를를 사용해야합니까 ....

try 
{  
//code 
} 
catch(Exception ex) 
{  
Response.Redirect("Error.aspx"); 
throw;  
} 
+0

당신이 생각? 재미있는 질문을하지 않는 이유는. –

답변

7

당신이 매개 변수를 제공하지 않기 때문에이 나타내는 현재 페이지 여부 실행을 계속해야한다면 End()를 호출하여 자동으로 페이지를 종료합니다. 단일 매개 변수가있는 메소드를 사용하는 것은 두 개의 매개 변수 (두 번째 (endResponse)가 true)로 메소드를 호출하는 것과 같습니다. End()에서 예외가 발생하므로 throw 문에 도달하지 않습니다.

참조 : http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

당신은 리디렉션을 하나 개 페이지에 대한 요청을 종료하고 진정한 에 을 위해 다른 페이지 설정 endResponse을 새 요청을 시작하거나 호출 페이지 핸들러에서이 방법을 사용하는 경우 메소드 오버로드. 이 메서드는 원래 요청에 대해 End를 호출하며 완료시 ThreadAbortException 예외를 발생시킵니다.

당신은 페이지가 두 개의 매개 변수와 함께 서명을 사용하고 false에 endResponse 매개 변수를 설정해야 실행을 계속하십시오.

3

과부하가없는 Response.Redirect를 호출하면 즉시 실행이 중지되어야하므로 throw가 발생하지 않습니다.

그러나 과부하를 사용하고 false로 전달하면 예 : Response.Redirect("Error.aspx", false) 그러면 페이지가 계속 실행 된 다음 리디렉션됩니다.

는 (적어도, 그 the documentation)에서 나의 이해이다.