asp에서든 asp.net에서든 response.end는 출력 내용을 종료하며 주로 프로그램 디버깅에 사용됩니다. 특히 프로그램에 응답과 같은 심각한 문제가 있는 경우 중단점 설정과 유사하게 매우 유용합니다. write는 중간 결과를 볼 수 없습니다. 이 경우 response.write 뒤에 response.end를 추가하십시오. 이는 중간 결과를 보는 데 매우 유용합니다.
먼저 그 이점에 대해 이야기하겠습니다.
이는 프로그램을 디버깅할 때에도 매우 유용합니다. 특히 프로그램에 심각한 문제가 있는 경우에는 response.write를 사용하여 중간 결과를 볼 수 없습니다. , response.write 뒤에 response.end를 추가하세요. 이는 중간 결과를 보는 데 유용합니다.
그러나 Response.End, Response.Redirect 또는 Server.Transfer 메서드를 사용하면 ThreadAbortException이 발생합니다. try-catch 문을 사용하여 이 예외를 포착할 수 있습니다.
Response.End 메서드는 페이지 실행을 종료하고 실행을 애플리케이션 이벤트 파이프라인의 Application_EndRequest 이벤트로 전환합니다. Response.End 다음의 코드 줄은 실행되지 않습니다.
이 문제는 Response.Redirect 및 Server.Transfer 메서드에서 모두 내부적으로 Response.End를 호출하기 때문에 발생합니다.
해결책:
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
• Response.End의 경우 Response.End 대신 HttpContext.Current.ApplicationInstance.CompleteRequest 메서드를 호출하여 Application_EndRequest 이벤트에 대한 코드 실행을 건너뜁니다.
• Response.Redirect의 경우 endResponse 매개 변수에 false를 전달하여 Response.End에 대한 내부 호출을 취소하는 오버로드 Response.Redirect(String url, bool endResponse)를 사용합니다. 예를 들어:
Response.Redirect(Default.aspx, false);
Response.End() 사용법
ASP 개발에서는 if...else 판단의 큰 섹션을 사용할 수도 있습니다. 그러나 동적 Response.write 콘텐츠이고 코드를 더 쉽게 읽을 수 있도록 하려면 Response.End()를 사용하면 됩니다. ASP 실행을 종료합니다. 이는 Break의 사용법과 유사합니다. 예를 들면 다음과 같습니다.
if (userid=)or(password=) then Response.Write() Response.End() '인터럽트 종료는 다음과 같습니다. if 다음은 데이터베이스가 비어 있지 않은 경우 n줄의 코드를 생략하고 데이터베이스를 읽는 동작입니다.
이런 방식으로 들어오는 사용자 이름이나 비밀번호가 비어 있으면 프롬프트 정보가 자동으로 작성된 다음 Response.End()가 프로그램을 중단하여 if에 도달합니다. . . 다른 역할.
게다가 Response.End를 사용하는 경우에는 다음과 같이 매일 프로그램을 디버깅할 때입니다.
다음 코드를 실행하지 않고 스플라이싱된 SQL 문을 출력하려면 다음과 같이 하면 됩니다.
sql=select * from userinfo response.Write(sql)response.End()rs.open sql ,conn,1,1 '이 문장은 실행되지 않습니다.
Response.End()를 추가할 곳이 너무 많아 정식 출시 시 주석 처리가 쉽지 않을 것 같다면, 다음 코드와 같은 함수로 캡슐화할 수 있습니다.
하위 디버그() Response.End()end 하위
위의 코드는 다음과 같이 수정됩니다.
sql=select * from userinfo response.Write(sql)debug()rs.open sql ,conn,1,1 '이 문장은 실행되지 않습니다.
이렇게 정식으로 출시되면 debug 함수에 있는 문장을 주석 처리하는 것도 디버깅 역할을 할 수 있는데, 이 경우에도 debug()를 너무 많이 사용하면 프로그램이 실행되지 못하는 경우가 있습니다. 디버깅하는 동안 지침을 따르십시오. 때로는 이러한 위치에서 실행이 중단되는 것을 원하지 않으므로 다음과 같이 debug() 함수를 다시 구성해 보겠습니다.
sub debug(isBreak) 'isBreak는 부울 값을 갖는 매개변수입니다. true로 설정되면 인터럽트가 수행됩니다. 그렇지 않으면 isBreak이면 Response.End() endend sub가 수행됩니다.
사용시 코드는 다음과 같습니다.
sql=select * from userinfo response.Write(sql)debug(false)rs.open sql ,conn,1,1 '이 문장이 실행됩니다. rs.close()sql=select * from product response.write(sql) debug (true)rs.open sql,conn,1,1 '이 문장은 실행되지 않습니다.
좋습니다. 이는 기본적으로 인터럽트를 제어해야 하는 요구 사항을 충족할 수 있지만 이는 단순한 분석에 불과하며 충족해야 할 디버깅 요구 사항이 더 많이 있을 수 있으며 추가 재구성이 필요합니다. 사실 프로그램 개발은 리팩토링, 리팩토링, 리팩토링의 과정입니다. 그렇지 않으면 디자인 패턴이 너무 많을 것입니다. 모두 실제 개발 및 리팩토링 과정에서 선배들이 요약한 경험이며 배울 가치가 있습니다.