Recomendado: Coleção útil de funções no desenvolvimento de ASP (1) Uma coleção de funções úteis no desenvolvimento de ASP é bastante útil! Espero que todos os mantenham! % '*********************************************************
No VBScript, existe um retomado de erro no erro que faz com que o intérprete do script ignore os erros de tempo de execução e continue a execução do código do script. Em seguida, o script pode verificar o valor da propriedade Err.Number para determinar se ocorreu um erro. Se ocorrer um erro, um valor diferente de zero será retornado. No ASP 3.0, você também pode usar no erro 0 para voltar ao manuseio de erros padrão. Esse tipo de processamento é realmente realizado no ASP 2.0, mas não há descrição correspondente do documento, que é comum em muitos arquivos de processamento relacionados a dados ASP. Adicione o erro de erro ao lado de desativar o processamento de erros padrão e use Err para pegá -lo.Se errar então
err.clear
Ocorreu um erro em resposta.write!
Resposta.END
Final se
Para obter uma descrição de erro mais detalhada, vamos tentar o objeto Asperror. É um novo objeto de Asp3.0. Pode ser obtido através do método getLasterror do objeto do servidor . O Asperror fornece informações detalhadas sobre o último erro no ASP. Ao contrário do objeto ERR no VBScript, esse método não pode ser chamado a qualquer momento para ver se ocorre um erro. Ele só pode ser usado em uma página da web de erro personalizada do ASP. Se você usá -lo desligando o manuseio de erros padrão (usando o erro ON ERRO RETUMENT A NEXTENÇÃO) Como usar o objeto Err, o método GetLasterror não poderá acessar os dados detalhados do erro.
Propriedades do objeto Asperror:
O objeto Asperror fornece nove atributos para indicar a natureza e a fonte do erro que ocorreram e retorna o código real que causou o erro. As propriedades e descrições são as seguintes:
ASPCODE: Inteiro. Número de erro gerado pelo ASP/IIS, como 0x800A009
Aspdescription: String Type. Se esse erro for um erro relacionado ao ASP, esta propriedade será uma descrição detalhada do erro. Por exemplo: All http: http_accept:*/* http_accept_language: zh-cn http_connection: Keep-alive http_host: s http_user_agent: mozilla/4.0 (compatível; msie 6.0; Windows NT 5.0;
Categoria: Tipo de string. A fonte do erro é a do idioma de script interno do ASP, ou um objeto.
Coluna: Inteiro. Localização do caractere no arquivo que gerou o erro
Descrição: Tipo de string. Uma breve descrição do erro
Arquivo: String Type. O nome do arquivo sendo processado quando o erro ocorreu
Linha: Inteiro. Número da linha no arquivo que gerou o erro
Número: Inteiro. Um código de erro com com padrão
Fonte: Tipo de string. O código real da linha que levantou o erro
OK, essas são 9 propriedades. A sintaxe de usar o objeto Asperror é:
asperror.property
É isso: asperror.aspcode ()
Asperror.aspDescription ()
Asperror.category ()
Asperror.column ()
Asperror.Description ()
Asperror.file ()
Asperror.line ()
Asperror.Number ()
Asperror.source ()
Quando ocorre um erro relacionado ao ASP em qualquer página em todos os diretórios suportados pelo IIS (ou no diretório em que as propriedades de mapeamento de erros são editadas), a página de erro personalizada será carregada. De fato, uma armadilha de erro de script normal foi definida agora, porque o erro de tempo de execução do ASP em qualquer página da Web neste diretório acionará uma página de erro personalizada. A página da web de erro é a parte da instalação padrão do IIS e pode ser personalizada de acordo com situações pessoais. Por exemplo, quando inserimos uma página da Web inexistente em um diretório, ocorre um erro 404. Quando ocorre um erro 404, a página usada é 404b.htm. Este arquivo contém uma peça de código de script do cliente, que obtém o URL do documento atual (recupere do atributo URL do objeto do documento) e o exibe na página: [html] <! Doctype html public -// w3c // dtd html 3.2 final // pt>
<html dir = ltr>
<head>
<estilo> a: link {font: 9pt/11pt 环; Cor: FF0000} a: visitado {font: 9pt/11pt 环; Cor:#4E4E4E}
</style>
<Meta name = robots Content = noindex>
<Title> Incapaz de encontrar a página da web </ititure>
<Meta http-equiv = content-type content = text-html; charset = gb2312>
<Meta nome = ms.locale content = zh-cn>
</head>
<Cript>
function homepage () {
<!-
// Em bits reais, os URLs são devolvidos ao nosso script como este:
// res: //shdocvw.dll/http_404.htm#http: //www.docurl.com/bar.htm
// Para teste, use docurl = res: //shdocvw.dll/http_404.htm#https: //www.microsoft.com/bar.htm
Docurl = document.url;
// É aqui que o HTTP ou HTTPS estará, como encontrado pesquisando: // mas pulando o res: //
protocolindex = docurl.indexof (: //, 4);
// Isso encontra a barra final para o servidor de domínio
serverIndex = docurl.indexOf (/, protocolindex + 3);
// Para o HREF, precisamos de um URL válido para o domínio. Procuramos o símbolo # para encontrar o começo
// do URL verdadeiro e adicione 1 para ignorá -lo - este é o valor iniciante. Usamos o ServerIndex como o marcador final.
//urlResult=docurl.substring(protocolindex - 4, serverIndex);
Beginurl = docurl.indexOf (#, 1) + 1;
urlResult = docurl.substring (Beginurl, ServerIndex);
// Para exibição, precisamos pular depois de http: // e ir para a próxima barra
displayResult = docurl.substring (protocolindex + 3, serverIndex);
InsertElementanchor (urlResult, displayResult);
}
função htmlencode (texto)
{
Retornar Text.Place (///G, '& amp'). Substitua (/'/g,' & quot; '). Substitua (/</g,' & lt; '). Substitua (// g,' & gt; ');
}
função tagattrib (nome, valor)
{
return ''+name+'='+htmlencode (value)+'';
}
função printtag (nome de tagname, needClosetag, attrrib, interno) {
document.write ('<' + tagname + attrib + '>' + htmlencode (interno));
if (needClosetAg) document.write ('</' + tagname + '>');
}
função uri (href)
{
Iever = window.navigator.AppVersion;
Iever = iever.substr (iever.indexof ('msie') + 5, 3);
return (iever.charat (1) == '.' && iever> = '5.5')?
Encodeuri (href):
escape (href) .place (/%3a/g, ':'). Substitua (/%3b/g, ';');
}
função insertElementanchor (href, texto)
{
Printtag ('a', verdadeiro, tagattrib ('href', uri (href)), texto);
}
//->
</script>
<corpo bgcolor = ffffff>
<largura da tabela = 410 CellPadding = 3 Cellpacing = 5>
<tr>
<td align = esquerda valign = largura média = 360>
<h1 style = cor: 000000; Fonte: 12pt/15pt Songti> <!-Problem-> A página da web não pode ser encontrada </h1>
</td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = cor: 000000; Fonte: 9pt/11pt> A página da web que você está procurando pode ter sido excluída, renomeada ou temporariamente indisponível. </font> </td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = cor: 000000; Fonte: 9pt/11pt Song Fonte>
<hr color =#c0c0c0 noshade>
<p> Por favor, tente o seguinte: </p>
<ul>
<li> Se você digitou um endereço da Web na barra de endereços, verifique se ele está escrito corretamente. <br>
</li>
<li> Abra <Cript>
<!-
if (! ((window.navigator.userragent.indexof (msie)> 0) && (window.navigator.appversion.charat (0) == 2)))
{
Página inicial ();
}
//->
</script> página inicial, encontre links para as informações necessárias. </li>
<li> Clique no botão <a href = javascript: history.back (1)> back </a> para experimentar outros links. </li>
</ul>
<h2 style = font: 9pt/11pt Songti; Cor: 000000> http 404 - O arquivo não pode ser encontrado <br> Serviço de Informações da Internet <br> </h2>
<hr color =#c0c0c0 noshade>
<p> Informações técnicas (apoiando indivíduos) </p>
<ul>
<li> Detalhes: <Br>
</li>
</ul>
</font> </td>
</tr>
</tabela>
</body>
</html>
[/html]
Quando ocorre um erro, a relação de mapeamento entre o erro e o arquivo da página da web de erro é determinada na guia Erros personalizados da caixa de diálogo Propriedades de cada diretório. Isso está nas configurações de propriedade no gerente de serviços de Internet. Se você estiver interessado, vá e dê uma olhada.
Erro personalizado A página da Web exibe todos os valores do atributo de objeto Asperror e retorna uma mensagem de status do cabeçalho HTTP ao cliente usando o método Response.status, indicando que ocorreu um erro. Em seguida, use o método getLasterror para obter uma referência ao objeto Asperror, para que você possa acessar os dados detalhados do erro:
...
<%
Response.status = 500 Erro do servidor interno
Definir objaspeerror = server.getLasterRor ()
%>
Atualmente executando a página: <b> show_error.asp </b> <p>
<b> Detalhes do erro: </b> <br>
Asperror.aspcode = < % = objaspeerror.aspcode %> <br>
Asperror.number = < % = objaspeerror.number %> (0x < % = hex (objaspeerror.number) %>) <br>
Asperror.source = < % = server.htmlencode (objasperror.source) %> <br>
Asperror.category = < % = objaspeerror.category %> <br>
Asperror.file = < % = objaspeerror.file %> <br>
Asperror.line = < % = objaspeerror.line %> <br>
Asperror.column = < % = objaspeerror.column %> <br>
Asperror.description = < % = objaspeerror.Description %> <br>
Asperror.asps = < % = objaspeerror.asps %>
<Form Action = < % = request.ServerVariables (http_referer) %> método = post>
<Tipo de entrada = Nome de envio = CMDOK Valor = retornar à página anterior>
<p>
</morm> Se ocorrer um erro de script ou ASP em uma página de erro personalizada, o IIS retornará apenas uma mensagem geral correspondente ao código de erro 500: 100. Essa pode ser uma mensagem de erro do próprio mecanismo de script, ou apenas uma mensagem bastante simples: erro interno do servidor. A página de erro personalizada não será recarregada novamente.
Todos os ambientes que contêm a página da Web errados serão entregues na página da web personalizada. Ou seja, os valores armazenados em qualquer coleta ou atributo de objetos internos da ASP podem ser usados. Por exemplo, se você recuperar o valor HTTP_Referer da coleção Request.ServerVariables, ele refletirá o URL da página que chamou de página original (ou seja, a página que foi antes do erro). Esse valor não muda quando o servidor transfere a execução para a página da web errada e não conterá o URL da página da web que estava executando quando o erro ocorreu.
Da mesma forma, o valor script_name será o nome da página que contém o erro, não o URL da página. Quando uma página de erro for carregada, você pode confirmar isso verificando o URL na barra de endereços do navegador. No entanto, os valores armazenados nas variáveis de script da página da web original não estão disponíveis na página da web errada personalizada.
Se a página da Web ASP original estiver em execução dentro de uma transação, ou seja, existe uma diretiva < % @transaction =… %> na frente da página da web, você também deve determinar se alguns métodos precisam ser coletados na página da web para sair da transação. Por exemplo, você pode chamar o método setabort com o objeto ObjectContext embutido:
objectContext.setabort
Bem, o tempo do front-end enviou milhares de e-mails de spam, todos com manutenção de erros
Opção explícita
Código de status da resposta.AddHeader, 200
Response.AddHeader Razão, OK
Em erro de erro em seguida
Response.clear
Objerror escuro
Set objerror = server.getLasterRor ()
Dim Objerr, Objmail, HTML
Definir objerr = server.getLasterRor ()
Set objmail = createObject (cdonts.newmail)
objmail.from = [email protected]
objmail.to = [email protected]
objmail.BodyFormat = 0
objmail.mailFormat = 0
objmail.subject = QOP ERRO 500
html = <font FACE = 'Verdana, Arial, Helvetica, Sans-Serif'> <br>
html = html & <p> Ocorreu um erro em: & agora
html = html & <p> referido de: & request.Servervariables (http_referer)
html = html & <p> url: & request.servervariables (URL)
html = html & <p> <b> categoria: </b> </p> & objerr.category
html = html & <p> <b> nome do arquivo: </b> </p> & objerr.file
html = html & <p> <b> Código ASP: </b> </p> & objerr.aspcode
html = html & <p> <b> Número: </b> </p> & objerr.number
html = html & <p> <b> Fonte: </b> </p> & objerr.source
html = html & <p> <b> linho: </b> </p> & objerr.line
html = html & <p> <b> coluna: </b> </p> & objerr.column
html = html & <p> <b> Descrição: </b> </p> & objerr.description
html = html & <p> <b> ASP Descrição: </b> </p> & objerr.aspDescription
html = html & <lockQuote>
html = html & all http: & request.servervariables (all_http)
html = html & </lockquote> </font>
objmail.body = html
objmail.send
objerr.clear
Defina objmail = nada
Definir objerr = nada
Response.write (html)
Isso é realmente irritante para operar. Veja o que o Sr. Lao Gai escreveu em 500-100.asp:
<%
Response.Write objasperror.category
Se objaspeerror.aspcode> então Response.write, & objaspeerror.aspcode
Response.Write (0x & Hex (objasperror.number) &)
Response.write <b> & objasperror.description & </b> <br>
Se objaspeerror.asps> então Response.write objaspeerror.asps & <br>
blnerrorWritten = false
'Somente mostre a fonte se estiver disponível e a solicitação é da mesma máquina que o IIS
Se objaspeerror.source> então
strServername = lcase (request.Servervariables (server_name))
strServerip = request.Servervariables (local_addr)
stremoteip = request.Servervariables (Remote_addr)
If (strServername = localhost ou strSerVerip = strRemoteip) e objasperror.File <>? Então
Response.Write objasperror.File
Se objasperror.line> 0 então Response.Write, Line & Objasperror.line
Se objaspeerror.column> 0 então Response.Write, Column & Objaspeerror.Column
Response.write <br>
Resposta.write <font style = cor: 000000; Fonte: 8pt/11pt Courier Novo> <b>
Response.write server.htmlencode (objasperror.source) & <br>
Se objaspeerror.column> 0 então Response.Write String ((objaspeerror.column - 1), -) & ^<br>
Response.Write </b> </font>
blnerrorWritten = true
Final se
Final se
Se não for blnerrorwritten e objasperror.file <>? Então
Response.write <b> & objasperror.file
Se objasperror.line> 0 então Response.Write, Line & Objasperror.line
Se objaspeerror.column> 0 então Response.Write, Column & Objaspeerror.Column
Response.write </b> <br>
Final se
%>
Aqui está uma referência: ASP 3.0 Programação avançada em relação às propriedades do uso de objetos Asperror, há os seguintes pontos que vale a pena notar:
· Mesmo que nenhum erro ocorra, a propriedade Number deve sempre ter um valor. Se nenhum erro ocorrer quando a página da Web ASP chamar o método GetLasterRor, o valor dessa propriedade é 0. Normalmente, para o erro de tempo de execução dos scripts ASP, a propriedade Number retorna o valor hexadecimal 0x800A0000, além do código de erro do motor de script padrão. Por exemplo, o exemplo anterior retorna um valor de 0x800A0009 para o erro de alcance do subscrito, porque o código de erro do VBScript para esse tipo de erro é 9.
· Quando um erro for passado, os atributos de categoria e descrição sempre terão um valor.
· O valor da propriedade ApScode é gerado pelo IIS e estará vazio para a maioria dos erros de script. Em mais casos, existem valores correspondentes quando um componente externo é usado erro.
O valor da propriedade AspDescription é gerado pelo pré -processador ASP, não pelo mecanismo de script atualmente em uso, e estará vazio para a maioria dos erros de script. Mais frequentemente, existe um valor correspondente para erros, como chamar um método inválido em um objeto interno ASP.
· As propriedades do arquivo, origem, linha e coluna só podem ser definidas quando ocorrer um erro e se o erro detalhado estiver disponível. Para um erro de tempo de execução, as propriedades de arquivo e linha geralmente são válidas, mas a propriedade da coluna geralmente retorna -1. A propriedade de origem é retornada quando o erro é um erro de sintaxe que impede que a página seja processada pelo ASP. Geralmente, nesses casos, as propriedades de linha e coluna são válidas. Se você escrever o valor da propriedade de origem para a página, é aconselhável passar o valor para Htmlencode primeiro, caso ele contenha caracteres HTML ilegais. O método HTMLencode será discutido em detalhes posteriormente neste capítulo.
Objeto err
Dicas: Esta é a segunda vez que escrevi isso, nnd. O foco original estava na introdução do objeto Asperror. Agora vou apresentar o objeto Err. Este é um objeto muito simples e fácil de operar. Vamos lá., Na página ASP.
Ao usar um objeto ERR, você não precisa criar uma instância, o que significa que você pode usá -lo casualmente quando deseja usá -lo. Assim como a sessão, você não precisa criar uma instância como o uso de um objeto Adodb. Set Conn = Server.CreateObject (Adodb.Connection) é usado para criar uma instância. Ele retorna um código de erro, mas err! = Err.number pode ser limpo com o método claro para facilitar o próximo uso. Seu método principal é um método de descrição, que retorna uma breve descrição de erro. Aqui está um exemplo muito clássico:
< %@ Idioma = vbscript %>
<%Response.Buffer = true
Em erro de erro em seguida
%>
<%
s = sa
Response.write (int (s))
Se err.number <> 0 então
Response.clear
Ocorreu um erro em resposta.write:%>
<html>
<head>
<Title> </title>
</head>
<Body>
Número do erro: < %= err.number %> <br/>
Mensagem de erro: < %= err.description %> <br/>
Arquivo de erro: < %= err.source %> <br/>
Linha de erro: < %= err.line %> <br/>
< %= Err %>
</Body>
</html>
<%Final se%>
Execute e veja, err.line está vazio, por quê? Como o método de linha escrito no VB da ASP não é suportado, este é um imóvel de resíduos em apoio ao VB.jscript e você precisa estudar para capturar.
Vale ressaltar que, ao usar o objeto Err, no currículo de erro, deve ser adicionado e a exceção que passou o objeto Asperror é lançada.
Ao vincular um banco de dados. Como o item é o método padrão, o método de escrita de erro (número) é equivalente ao anterior. Abaixo está um programa. Usado para enumerar objetos de erro:
<%
Em erro de erro em seguida
Definir Conn = Server.CreateObject (Adodb.Connection)
Dim i, your_databasepath: your_databasepath = n.MDB
Connstr = provedor = microsoft.jet.oledb.4.0; fonte de dados = & server.mappath (your_databasepath) &
Conn.Open Connstr
Se Conn.errors.Count <> 0 então
Response.write falhou em vincular o banco de dados <hr/>
para i = 0 a Conn.errors.Count-1
Response.Write Conn.errors.item (i) & <Hr>
Response.write err.description
próximo
outro
Banco de dados de links da resposta.Write
final se
Conn.Close
%>
Não há diferença entre o objeto ERR, você viu o resultado da comparação? É tão frio que é fácil usar o objeto Err diretamente.
Geralmente, é recomendável usar o objeto Asperror durante a depuração, o que significa que, se o erro de erro no próximo linha for REM, ele será jogado por padrão com o Asperror. Durante a operação oficial, você pode usar o objeto ERR para fazer algo, a menos que tenha requisitos especiais.
Compartilhar: Coleção útil de funções no desenvolvimento de ASP (2) Uma coleção de funções úteis no desenvolvimento do ASP é bastante útil, por favor, mantenha -o! '*****************************************