ASP é tão simples que muitos desenvolvedores não pensam no tratamento de erros. O tratamento de erros pode tornar seu aplicativo mais lógico. Já vi muitos sites comerciais escritos em ASP e a maioria deles ignora o tratamento de erros. Tipo errado.
Existem três tipos principais de erros:
1. Erro de compilação:
Esse tipo de erro geralmente ocorre devido a problemas de sintaxe no código. O ASP parou de funcionar devido a um erro de compilação.
2. Erro de execução:
Este erro ocorre quando você está se preparando para executar o ASP. Por exemplo: se você tentar atribuir um valor a uma variável, mas ele estiver fora do intervalo permitido da variável.
3. Erro lógico:
Erros lógicos são os mais difíceis de detectar. Esse erro geralmente é um erro estrutural que não pode ser encontrado pelos computadores. Isso exige que inspecionemos nosso código de cima a baixo.
Como os erros de compilação geralmente ocorrem junto com erros lógicos e geralmente podem ser exibidos, nos preocupamos apenas com erros de execução. Tudo isso encerra a execução do ASP e deixa um monte de texto muito hostil para o usuário. Então, como lidamos com erros de tempo de execução?
Tipo de erro:
ADODB.Campo (0x800A0BCD)
BOF ou EOF é TRUE ou o registro atual foi excluído e a operação necessária requer um registro atual.
Motivo: Quando você utilizou SQL para pesquisar registros no banco de dados, o resultado da pesquisa estava vazio e você não tratou a situação de registros vazios.
Solução: 1. Se você não acredita que o resultado da pesquisa esteja vazio, considere se sua instrução SQL está correta. 2. Se estiver realmente vazio, adicione "if rs.eof then" ou "do while; not rs.eof "Declarações como" são usadas para lidar com a situação eof.
Tipo de erro:
(0×80020009)
Ocorreu um acidente.
Motivo: ao usar SQL para pesquisar registros de banco de dados, o resultado da pesquisa estava vazio e você chamou registros como rs("aa") no código subsequente.
Solução: O mesmo que acima, mais o julgamento e processamento de rs.eof, ou sua instrução SQL está errada, fazendo com que o registro não seja encontrado e o registro de rs("aa") não possa ser usado posteriormente.
Tipo de erro:
Páginas de servidor ativo, ASP 0126 (0×80004005)
Arquivo incluído 'xxx.asp' não encontrado.
Motivo: Como diz a mensagem de erro, este arquivo de inclusão não existe.
Solução: Se você tem certeza de que este arquivo existe, então seu caminho está escrito errado. Por exemplo, seu caminho relativo ao diretório raiz do site deve ser inc/xxx.asp, então inc/xxx.asp deve ser escrito em include. e não apenas xxx.asp. Anexo: A forma de escrever include é:
Tipo de erro:
Provedor Microsoft OLE DB para drivers ODBC (0×80004005)
[Microsoft][ODBC Microsoft Access Driver] A operação deve usar uma consulta atualizável.
Motivo: Isso é muito comum em servidores XP e é um problema de configuração do servidor ou de permissão do usuário.
Solução: Se o erro for apenas de depuração nesta máquina, clique com o botão direito na pasta onde o site está localizado, clique em "Compartilhamento e Segurança...", clique em Adicionar... em "Segurança", escreva todos, e depois habilite isto As permissões do usuário são todas, ou seja, todas exceto a primeira são verificadas. Após a confirmação, atualize e poderá ser utilizado. (Observação: se você não conseguir encontrar a opção "Segurança", clique em "Ferramentas" em qualquer pasta, depois em "Opções de pasta" - "Exibir" e desmarque a coluna "Usar compartilhamento simples de arquivos". Pode)
Tipo de erro:
Erro do compilador Microsoft VBScript (0x800A0401)
Declaração não finalizada
Motivo: erro de sintaxe.
Solução: Verifique as linhas solicitadas pelo sistema. Se o prompt for a última linha desta página, é muito provável que a instrução if tenha esquecido de escrever "end if" e a instrução select tenha esquecido de escrever "end select". é necessário, fazendo com que o servidor não o encontre. No final da instrução, o erro deve ser exibido na última linha.
Tipo de erro:
Mecanismo de banco de dados Microsoft JET (0x80040E10)
Pelo menos um parâmetro não tem valor especificado.
Motivo: Ao escrever instruções SQL, geralmente chamamos alguns parâmetros e é possível que um desses parâmetros não tenha recebido um valor.
Solução: Verifique se o valor de cada parâmetro é realmente passado. É muito provável que alguns parâmetros sejam realmente "".
Tipo de erro:
Mecanismo de banco de dados Microsoft JET (0x80040E37)
O mecanismo de banco de dados Microsoft Jet não consegue localizar a tabela de entrada ou a consulta 'AA'. Determine se ele existe e se seu nome está escrito corretamente.
Razão: Esta tabela não existe.
Solução: Talvez você tenha escrito o nome da tabela errado ou conectado ao banco de dados errado? Verifique com atenção novamente!
Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A000D)
Incompatibilidade de tipo: /'[string: ""]/"
Motivo: é porque o tipo da sua variável é string, mas você a usa como um número ou outro tipo.
Solução: Por exemplo, se você precisa de uma variável numérica para calcular operações matemáticas como i=i+1, você deve usar cint (nome da variável) na variável para forçar a conversão para o tipo numérico. A comparação entre as duas variáveis também deve ser. do mesmo tipo, portanto também precisa ser convertido, o método é o mesmo acima.
Tipo de erro:
Mecanismo de banco de dados Microsoft JET (0x80040E07)
Incompatibilidade de tipo de dados na expressão padrão.
Motivo: Geralmente ocorre um erro ao escrever instruções SQL, ou seja, variáveis numéricas e de string são confundidas.
Solução: É fácil de fazer. Tente remover as aspas simples das variáveis no SQL que foram adicionadas "" ou adicionar "" às variáveis que foram originalmente consideradas números e, em seguida, verifique o efeito.
Tipo de erro:
Erro de execução do Microsoft VBScript (0x800A01A8)
Objeto ausente:"
Motivo: É muito provável que você não tenha definido o objeto rs.
Solução: Não se esqueça de escrever set rs=server.CreateObject("adodb.recordset"), para que você possa definir o objeto ou não use este método de escrita diretamente, será muito mais conveniente usar conn. execute("SQL") diretamente e não há necessidade de considerar problemas de objeto.
Tipo de erro:
Erro de tempo de execução do Microsoft VBScript (0x800A005E)
Uso inválido Nulo: 'Substituir'
Motivo: O uso inválido de funções é comum, incluindo Split, etc. O motivo é relativamente simples, porque o conteúdo do seu Substituir está vazio.
Solução: É melhor adicionar um IF para verificar se o conteúdo que deseja substituir está vazio.
Erro do compilador Microsoft VBScript Erro '800a03f6'
O driver ODBC não oferece suporte à propriedade necessária.
Motivo: pode ser porque não há nenhum nome de campo aparecendo na instrução sql, geralmente o nome do campo ou a palavra-chave sql estão escritos incorretamente. Também é possível que a tabela a ser aberta pelo SQL tenha sido aberta exclusivamente.
Solução: verifique cada nome de campo e cada palavra-chave que aparece na instrução sql
Erro do provedor Microsoft OLE DB para drivers ODBC '80004005'
O usuário 'Admin' na máquina 'HDZC-3JQSKBWO02' possui bloqueio exclusivo na tabela de dados 'order_detail'.
Motivo: A tabela exigida pelo sql é aberta em forma de design de tabela pelo acesso
Solução: desative o design da mesa
Erro do compilador Microsoft VBScript Erro '800a03f6'
Não foi encontrado no acervo o item correspondente ao nome ou número ordinal solicitado.
Motivo: Não há nome de campo que aparece na instrução sql. Geralmente é um erro ao escrever o nome do campo ou a palavra-chave sql.
Solução: verifique cada nome de campo que aparece na instrução sql
Erro ADODB.Recordset '800a0e78'
Nenhuma operação é permitida enquanto o objeto estiver fechado.
Motivo: rs.close foi usado antes da instrução rs.open sql,conn,3,3 para fechar o objeto rs.
Solução: remova o rs.close anterior
Erro do provedor Microsoft OLE DB para drivers ODBC '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Erro de sintaxe (operador ausente) na expressão de consulta 'oid form classtree where oid = 25′.
Motivo: há uma palavra-chave em inglês escrita ilegalmente ou um erro de subparágrafo na instrução sql.
Solução: digite a instrução sql e compare-a palavra por palavra para descobrir os erros de escrita.
A operação requer uma consulta atualizável
Resposta: Verifique se o arquivo da biblioteca é somente leitura.
Resposta 2: O conjunto de registros classificado (ordenado por) (rs) não permite operações de atualização (rs.update)
3219 Operação não permitida neste conteúdo
Resposta 3: Se as propriedades dos campos do banco de dados estão definidas para permitir a inserção de valores nulos.
adErrInvalidArgumento 3001
0x800A0BB9
O aplicativo usa um parâmetro do tipo errado, está fora do intervalo aceitável ou entra em conflito com outros parâmetros.
adErrNoCurrentRecord 3021
0x800A0BCD
BOF ou EOF é True ou o registro atual foi excluído. A operação solicitada pela aplicação necessita do registro atual.
adErrIllegalOperation 3219
0x800A0C93
A operação solicitada pela aplicação não é permitida neste contexto
adErrInTransaction 3246
0x800A0CAE
O aplicativo não pode fechar explicitamente o objeto Connection durante uma transação.
adErrFeatureNotAvailable 3251
0x800A0CB3
O provedor não oferece suporte à operação solicitada pelo aplicativo.
anúncioErrItemNotFound 3265
0x800A0CC1
O ADO não consegue localizar um objeto na coleção que corresponda ao nome ou à referência de sequência solicitada pelo aplicativo.
adErrObjectInCollection 3367
0x800A0D27
Não é possível anexar, o objeto já está na coleção.
adErrObjectNotSet 3420 0x800A0D5C O objeto referenciado pelo aplicativo não aponta mais para um objeto válido.
adErrDataConversion 3421
0x800A0D5D
O aplicativo utilizou um tipo de valor que não é adequado para a operação atual.
adErrObjectClosed 3704
0x800A0E78
Se o objeto estiver fechado, a operação solicitada pela aplicação não será permitida.
adErrObjectOpen 3705
0x800A0E79
Se o objeto estiver aberto, a operação solicitada pela aplicação não será permitida.
adErrProviderNotFound 3706
0x800A0E7A
O ADO não consegue localizar o provedor especificado.
adErrBoundToCommand3707
0x800A0E7B
O aplicativo não pode usar o objeto Command para alterar a propriedade ActiveConnection do objeto Recordset para seus dados de origem.
adErrInvalidParamInfo 3708
0x800A0E7C
O aplicativo define o objeto Parameter incorretamente.
adErrInvalidConnection 3709
0x800A0E7D
Um aplicativo solicita uma operação em um objeto fazendo referência a um objeto Connection fechado ou inválido.
Erro ADODB.Field '80020009' BOF ou EOF é 'true' ou o registro atual foi excluído e a operação necessária requer um registro atual.
A solução é a seguinte: Este erro é causado pela inexistência de registros SELECT e DELETE ou por não haver registros na biblioteca, portanto, verifique a instrução SQL para ver se as condições para SELECT e DELETE estão corretas. SELECIONE um registro ou use On antes de DELETE Error Resume Next…….On Error Goto 0 para manipular. Se for porque não há registro na biblioteca, basta adicionar um julgamento If objRecordSet.Eof E objRecordSet.Bof Then Porque quando o RecordSet é aberto, o ponteiro aponta para o final por padrão, então você pode apenas usar If objRecordSet. Eof Então julgar.
ActiveServerPages,ASP0126(0×80004005)–>incluir arquivo não encontrado
MicrosoftOLEDBProviderforODBCDrivers (0x80040E21) -> erro de instrução SQL (incompatibilidade de tipo de dados ou erro de nome da tabela (nome do campo) ou a tabela está em estado de edição ou a tabela não existe no banco de dados aberto por conn)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E14) -> erro de instrução SQL (erro de nome de campo ou incompatibilidade de tipo de dados)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)–>erro de instrução sql (o tipo do campo a ser inserido ou atualizado não corresponde ao tipo de dados da variável)
MicrosoftOLEDBProviderforODBCDrivers (0x80040E57) -> erro de instrução sql (dados a serem inseridos ou atualizados estouram)
MicrosoftOLEDBProviderforODBCDrivers (0x80040E10) -> erro de instrução SQL (o nome do campo de atualização ou o tipo de dados a ser atualizado está errado)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005)–>erro de instrução sql (o valor do campo a ser inserido ou atualizado não pode ser nulo)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005) –>Erro ao abrir banco de dados, nenhum banco de dados encontrado no diretório especificado
MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)–>Nenhuma tabela encontrada
Erro de tempo de execução do MicrosoftVBscript (0x800A000D) -> Erro ao referenciar a variável rs (o objeto rs está fechado ou indefinido)
Erro de tempo de execução MicrosoftVBscript (0x800A01C2) -> erro de script vbscript (erro de instrução vbscript)
Erro de tempo de execução MicrosoftVBscript (0x800A0006) -> erro de script vbscript (erro de estouro)
Erro do compilador MicrosoftVBscript (0x800A040E) -> loop ausente
Erro do compilador MicrosoftVBscript (0x800A03EA) -> ausente if ou endif
Erro do compilador MicrosoftVBscript (0x800A03EE)–>Instrução não finalizada (ausente ")")
Erro do compilador MicrosoftVBscript (0x800A03F6) -> erro de instrução if (endif ausente)
Erro de tempo de execução do MicrosoftVBscript (0x800A005B) -> conjunto está faltando
Erro de tempo de execução do MicrosoftVBscript (0x800A0005) -> Variável não definida
Erro do compilador MicrosoftVBscript (0x800A03F9) -> se a instrução estiver faltando, então
Erro do compilador MicrosoftVBscript (0x800A0411) -> erro de definição de instrução dim
ADODB.Recordset (0x800A0BB9) -> erro de instrução SQL (a instrução SQL ou instrução conn não está definida ou ocorre um erro ao atribuir um valor a um atributo rs)
ADODB.Recordset(0x800A0CC1)–> erro de objeto rs (o objeto rs em si não existe ou faz referência incorreta a um nome de campo inexistente)
ADODB.Recordset (0x800A0BCD) -> erro de objeto rs (não há registro no conjunto de registros, mas o conjunto de registros é operado)
ADODB.Recordset (0x800A0E78) -> erro de objeto rs (o conjunto de registros não existe, a instrução rs.open está faltando)
ADODB.Recordset(0x800A0CC1) -> erro de objeto rs (referenciando um nome de campo inexistente)
ADODB.Recordset (0x800A0E7D) -> erro de definição de conexão
ADODB.Recordset(0x800A0CB3)–>O banco de dados é aberto no modo somente leitura e os dados não podem ser atualizados.