Seja em asp ou asp.net, response.end encerra o conteúdo de saída e é usado principalmente para depurar programas. Também é muito útil, semelhante à configuração de pontos de interrupção, especialmente quando seu programa tem problemas graves, como um loop infinito. write não pode ver os resultados intermediários. Nesse caso, adicione response.end após response.write. Isso é muito útil para visualizar os resultados intermediários.
Primeiro vamos falar sobre seus benefícios.
Também é muito útil ao depurar um programa. É semelhante à configuração de pontos de interrupção, especialmente se o seu programa tiver problemas graves. Por exemplo, quando há um loop infinito, os resultados intermediários não podem ser vistos usando response.write. , depois de response.write Adicione response.end, que é útil para visualizar resultados intermediários.
No entanto, se você usar o método Response.End, Response.Redirect ou Server.Transfer, ocorrerá uma ThreadAbortException. Você pode capturar essa exceção usando uma instrução try-catch.
O método Response.End encerra a execução da página e alterna a execução para o evento Application_EndRequest no pipeline de eventos do aplicativo. As linhas de código após Response.End não são executadas.
Esse problema ocorre nos métodos Response.Redirect e Server.Transfer porque ambos os métodos chamam internamente Response.End.
Solução:
Para resolver esse problema, use um dos seguintes métodos:
• Para Response.End, chame o método HttpContext.Current.ApplicationInstance.CompleteRequest em vez de Response.End para ignorar a execução do código do evento Application_EndRequest.
• Para Response.Redirect, use a sobrecarga Response.Redirect(String url, bool endResponse), que passa false para o parâmetro endResponse para cancelar a chamada interna para Response.End. Por exemplo:
Response.Redirect (Default.aspx, falso);
Uso de Response.End()
No desenvolvimento ASP, às vezes você pode usar grandes seções de julgamentos if...else. No entanto, se for um conteúdo Response.write dinâmico e você quiser facilitar a leitura do código, você pode usar Response.End() para. encerrar a execução do ASP É semelhante ao uso do Break, por exemplo:
if (userid=)or(password=) then Response.Write() Response.End() 'Aqui está o final da interrupção if A seguir está a operação de leitura do banco de dados se ele não estiver vazio, omitindo n linhas de código
Dessa forma, quando o nome de usuário ou senha recebido estiver vazio, as informações do prompt serão gravadas automaticamente e, em seguida, Response.End() interromperá o programa para chegar ao if. . . O papel do outro.
Além disso, ao usar Response.End, é quando depuramos o programa diariamente, como
Para gerar a instrução SQL emendada sem executar o código a seguir, você pode fazer isso
sql=select * from userinfo response.Write(sql)response.End()rs.open sql ,conn,1,1 'Esta frase não será executada
Se você tem medo de que haja muitos lugares para adicionar Response.End() e não será fácil comentar quando for lançado oficialmente, você pode encapsulá-lo com uma função, como o seguinte código:
sub debug() Response.End()end sub
O código acima é modificado da seguinte forma:
sql=select * from userinfo response.Write(sql)debug()rs.open sql ,conn,1,1 'Esta frase não será executada
Desta forma, quando for lançado oficialmente, comentar as instruções na função debug pode desempenhar uma função de depuração. No entanto, também há um problema com isso. Se você usar muitos debug(), o programa pode não conseguir. siga as instruções durante a depuração. Às vezes, você não deseja que a execução seja interrompida nesses locais, então vamos reconstruir ainda mais a função debug(), como segue:
sub debug(isBreak) 'isBreak é um parâmetro com um valor booleano Se for definido como verdadeiro, ele será interrompido. Caso contrário, nenhum processamento de interrupção será executado.
O código quando usado é o seguinte:
sql=select * from userinfo response.Write(sql)debug(false)rs.open sql ,conn,1,1 'Esta frase será executada rs.close()sql=select * from product response.write(sql) debug (true)rs.open sql,conn,1,1 'Esta frase não será executada
Ok, isso basicamente pode atender à nossa necessidade de controlar as interrupções, mas é apenas uma análise simples. Na verdade, ainda é muito imperfeito. Pode haver muitos outros requisitos de depuração que precisam ser atendidos e uma reconstrução adicional é necessária. Na verdade, o desenvolvimento do programa é um processo de refatoração, refatoração e refatoração. Caso contrário, haveria muitos padrões de design. Eles são todas as experiências resumidas pelos predecessores do processo real de desenvolvimento e refatoração, e vale a pena aprender.