Будь то asp или asp.net, ответ.end завершает вывод содержимого и в основном используется для отладки программ. Он также очень полезен, как и установка точек останова, особенно когда в вашей программе есть серьезные проблемы, такие как бесконечный цикл. write не может видеть промежуточные результаты. В этом случае добавьте ответ.end после ответа.write. Это очень полезно для просмотра промежуточных результатов.
Сначала поговорим о его преимуществах.
Это также очень полезно при отладке программы. Это похоже на установку точек останова, особенно если в вашей программе есть серьезные проблемы. Например, при наличии бесконечного цикла промежуточные результаты невозможно увидеть с помощью response.write. , после ответа.пишите Добавьте ответ.конец, который полезен для просмотра промежуточных результатов.
Однако если вы используете метод Response.End, Response.Redirect или Server.Transfer, возникнет ThreadAbortException. Вы можете перехватить это исключение с помощью оператора try-catch.
Метод Response.End завершает выполнение страницы и переключает выполнение на событие Application_EndRequest в конвейере событий приложения. Строки кода, следующие за Response.End, не выполняются.
Эта проблема возникает в методах Response.Redirect и Server.Transfer, поскольку оба метода внутренне вызывают Response.End.
Решение:
Чтобы решить эту проблему, воспользуйтесь одним из следующих методов:
• Для Response.End вызовите метод HttpContext.Current.ApplicationInstance.CompleteRequest вместо Response.End, чтобы пропустить выполнение кода для события Application_EndRequest.
• Для Response.Redirect используйте перегрузку Response.Redirect(String url, bool endResponse), которая передает значение false для параметра endResponse, чтобы отменить внутренний вызов Response.End. Например:
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 * из ответа пользователя.Write(sql)response.End()rs.open sql ,conn,1,1 'Это предложение не будет выполнено
Если вы боитесь, что места для добавления Response.End() будет слишком много и его будет сложно закомментировать, когда он будет официально выпущен, вы можете инкапсулировать его с помощью функции, например следующего кода:
sub debug() Response.End()end sub
Приведенный выше код изменяется следующим образом:
sql=select * из ответа пользователя.Write(sql)debug()rs.open sql ,conn,1,1 'Это предложение не будет выполнено
Таким образом, когда он официально выпущен, комментирование операторов в функции отладки может играть роль отладки. Однако с этим также есть проблема. Если вы используете слишком много debug(), программа может оказаться неспособной это сделать. следуйте инструкциям во время отладки. Иногда вам не хочется, чтобы выполнение прерывалось в этих местах, поэтому давайте реконструируем функцию debug() следующим образом:
sub debug(isBreak) 'isBreak — это параметр с логическим значением. Если для него установлено значение true, обработка прерывания не будет выполняться, если isBreak, то Response.End() endend sub.
Код при использовании выглядит следующим образом:
sql=select * из ответа пользователя.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 'Это предложение не будет выполнено
Хорошо, это в принципе может удовлетворить нашу потребность в управлении прерываниями, но это всего лишь простой анализ. На самом деле он все еще очень несовершенен. Возможно, потребуется выполнить еще много требований по отладке, и потребуется дальнейшая реконструкция. На самом деле разработка программы — это процесс рефакторинга, рефакторинга и рефакторинга. В противном случае существовало бы очень много шаблонов проектирования. Это все опыт, накопленный предшественниками в реальном процессе разработки и рефакторинга, и им стоит поучиться.