Os 4 tipos de erros em programação
Os 4 tipos de erros comuns em programação
Normalmente, os erros na Internet podem ser divididos em 4 categorias. Vamos dar uma olhada em cada uma delas, mostrando um exemplo.
1. Erros de Sintaxe
Esses são erros de digitação ou outro erro no código que bloqueiam a execução de um script. Vamos ver um exemplo:
$i = 0
echo $i;
O código acima produz um erro, pois todas as linhas executáveis em PHP devem terminar em ponto-e-vírgula.
São também erros sintaxe o não fechamento de parênteses ou colchetes, erro de digitação de palavras-chaves, chaves sobrando, entre vários outros. Muitas vezes, erros de sintaxe são fáceis de diagnosticar por que as mensagens de erro mostram o problema e também sua localização.
2. Erros de Semântica
Erros de semântica envolvem códigos técnicamente corretos que contêm problemas com o significado do código. Já que os compiladores sempre apontam os erros, erros de semântica podem ser encontrados e diagnosticados, na maioria das vezes, sem muita dor de cabeça.
Olhe o exemplo:
include("arquivo.txt");
… seria um erro de semântica se o arquivo.txt não existisse e, dessa forma, não poderia ser incluído no documento. Note que erros de semântica podem se confundir facilmente com erros de sintaxe, porém, um script pode ser executado até o ponto onde está o erro, diferentemente dos scripts que contém erros de sintaxe. Isso se deve ao fato de conterem códigos corretos, como no exemplo acima. O que acontece é que o arquivo.txt não existe, mas o compilador não tem como saber disso enquanto ele não atingir a linha específica.
3. Erros de Lógica
São os mais difíceis de diagnosticar, erros de lógica contém códigos sintática e semanticamente corretos, mas não executam da maneira que o programador quer. Isso é o que deixa os programadores malucos, especialmente quando os códigos são extensos e complexos.
Erros de lógica podem ser simplesmente uso incorreto de operadores (+ no lugar de -, || no lugar de &&). Erros de lógica podem ser tão complexos quanto chamadas a registros de bancos de dados com SQLs mais elaborados. Podemos exemplificar uma lógica errada em PHP assim:
$estados = array ("MG", "DF", "SP", "RS", "CE");
echo "O primeiro registro no array de Estados é " . $estados[1];
Os 5 estados listados são gravados em um array chamado “estados”. O erro de lógica vem na segunda linha, quando queremos exibir o primeiro registro do array, ou MG. Programadores experientes notariam esse erro imediatamente, mas para aqueles que não tem muito conhecimento em programação, pode ser mais complicado. Essa forma de declaração de array faz com que o primeiro registro seja 0 e não 1. Para corrigir esse erro, basta modificar a saída estados[1] para estados[0].
Outro erro de lógica pode ser uma inclusão de um arquivo incorreto, deixar de tratar uma data, entre outros. Compiladores não podem encontrar erros de lógica, já que não tem conhecimento sobre o que o programador deseja fazer. No pequeno trecho de código acima, não há nada errado em exibir o registro número 1 do array, então o compilador executou sem problemas. Dessa forma, erros de lógica só podem ser encontrados e remediados pelo programador.
4. Errors de ambiente
Erros de ambiente são sempre desprezados, mas são bastante preocupantes na Internet. Erros de ambiente são erros que estão além do controle do programador, pode ser qualquer coisa além dos componentes de linguagem como, por exemplo, o valor da register_globals estar setado para off no php.ini. Notamos que erros de ambiente ocorrem com muito menos freqüência do que os outros tipos.
Normalmente, os erros na Internet podem ser divididos em 4 categorias. Vamos dar uma olhada em cada uma delas, mostrando um exemplo.
1. Erros de Sintaxe
Esses são erros de digitação ou outro erro no código que bloqueiam a execução de um script. Vamos ver um exemplo:
$i = 0
echo $i;
O código acima produz um erro, pois todas as linhas executáveis em PHP devem terminar em ponto-e-vírgula.
São também erros sintaxe o não fechamento de parênteses ou colchetes, erro de digitação de palavras-chaves, chaves sobrando, entre vários outros. Muitas vezes, erros de sintaxe são fáceis de diagnosticar por que as mensagens de erro mostram o problema e também sua localização.
2. Erros de Semântica
Erros de semântica envolvem códigos técnicamente corretos que contêm problemas com o significado do código. Já que os compiladores sempre apontam os erros, erros de semântica podem ser encontrados e diagnosticados, na maioria das vezes, sem muita dor de cabeça.
Olhe o exemplo:
include("arquivo.txt");
… seria um erro de semântica se o arquivo.txt não existisse e, dessa forma, não poderia ser incluído no documento. Note que erros de semântica podem se confundir facilmente com erros de sintaxe, porém, um script pode ser executado até o ponto onde está o erro, diferentemente dos scripts que contém erros de sintaxe. Isso se deve ao fato de conterem códigos corretos, como no exemplo acima. O que acontece é que o arquivo.txt não existe, mas o compilador não tem como saber disso enquanto ele não atingir a linha específica.
3. Erros de Lógica
São os mais difíceis de diagnosticar, erros de lógica contém códigos sintática e semanticamente corretos, mas não executam da maneira que o programador quer. Isso é o que deixa os programadores malucos, especialmente quando os códigos são extensos e complexos.
Erros de lógica podem ser simplesmente uso incorreto de operadores (+ no lugar de -, || no lugar de &&). Erros de lógica podem ser tão complexos quanto chamadas a registros de bancos de dados com SQLs mais elaborados. Podemos exemplificar uma lógica errada em PHP assim:
$estados = array ("MG", "DF", "SP", "RS", "CE");
echo "O primeiro registro no array de Estados é " . $estados[1];
Os 5 estados listados são gravados em um array chamado “estados”. O erro de lógica vem na segunda linha, quando queremos exibir o primeiro registro do array, ou MG. Programadores experientes notariam esse erro imediatamente, mas para aqueles que não tem muito conhecimento em programação, pode ser mais complicado. Essa forma de declaração de array faz com que o primeiro registro seja 0 e não 1. Para corrigir esse erro, basta modificar a saída estados[1] para estados[0].
Outro erro de lógica pode ser uma inclusão de um arquivo incorreto, deixar de tratar uma data, entre outros. Compiladores não podem encontrar erros de lógica, já que não tem conhecimento sobre o que o programador deseja fazer. No pequeno trecho de código acima, não há nada errado em exibir o registro número 1 do array, então o compilador executou sem problemas. Dessa forma, erros de lógica só podem ser encontrados e remediados pelo programador.
4. Errors de ambiente
Erros de ambiente são sempre desprezados, mas são bastante preocupantes na Internet. Erros de ambiente são erros que estão além do controle do programador, pode ser qualquer coisa além dos componentes de linguagem como, por exemplo, o valor da register_globals estar setado para off no php.ini. Notamos que erros de ambiente ocorrem com muito menos freqüência do que os outros tipos.
Páginas:
1
2
Existem alguns debuggers para PHP, é questão de testar e ver o que melhor se adapta. Estou atualmente usando Eclipse com Trustudio/WebStudio PHP IDE (xored)
http://www.xored.com/products.php
que usa o DBG PHP Debugger e achei muito bom. Há também o XDebug - http://www.xdebug.org/
Optei por usar o Eclipse com o plugin trustudio em vez do PHPEclipse devido ao debugger. E todos são open source, alto nível e gratuitos.
[ ]'s
http://www.xored.com/products.php
que usa o DBG PHP Debugger e achei muito bom. Há também o XDebug - http://www.xdebug.org/
Optei por usar o Eclipse com o plugin trustudio em vez do PHPEclipse devido ao debugger. E todos são open source, alto nível e gratuitos.
[ ]'s
01/11/2003 10:34am
(~21 anos atrás)
Seria legal ter um depurador de php como os de C (C++ Builder, Visual C++), ou mesmo vb e delphi, que voce pode rodar o codigo passo a passo e ver os valores das variaveis em cada passo.
O dreamweaver, o phpeditor, sao otimos editores, mas seus depuradores sao baseados em "testar tudo"...
Uma empresa grande como a Macromedia devia tentar trabalhar junto com a Zend para desenvolver um depurador visual para php.. ou mesmo alguem trabalhar em uma versao open source..
evitaria o martirio dos interminaveis echos de teste
O dreamweaver, o phpeditor, sao otimos editores, mas seus depuradores sao baseados em "testar tudo"...
Uma empresa grande como a Macromedia devia tentar trabalhar junto com a Zend para desenvolver um depurador visual para php.. ou mesmo alguem trabalhar em uma versao open source..
evitaria o martirio dos interminaveis echos de teste
31/10/2003 2:29pm
(~21 anos atrás)
Um outro erro que tive e demorei a perceber era fazer a variável com a consulta sql colocando entre aspas duplas e colocando as variáveis passadas dentro das aspas, no windows funcionou bem uma vez, mas no linux não, depois foi o inverso.
Depois percebi que para evitar erros o ideal seria concatenar os valores...
Depois percebi que para evitar erros o ideal seria concatenar os valores...
30/10/2003 7:28pm
(~21 anos atrás)
Os echos são fundamentais para resolver problemas, uma mania que às vezes me atrasa é de testar a cada função ou consulta escrita, vou lá e testo se tiver tudo ok, continuo...
29/10/2003 7:20pm
(~21 anos atrás)
É Newton, acho q essa solução dos ECHOs é a mais utilizada por todos os programadores. Realmente ela é indispensável...
29/10/2003 5:52am
(~21 anos atrás)
Se vc tem um problema de lógica, o que eu faço pra debugar é enxer meu código de ECHO's. Sempre após cada ação vc imprime na tela as variaveis fundamentais da função e acompanha assim o funcionamento do programa! :).
ASsim você pode identificar onde exatamente está o erro e estudar sua solução!
ASsim você pode identificar onde exatamente está o erro e estudar sua solução!
27/10/2003 1:30pm
(~21 anos atrás)
Bom artigo. Vou deixar um registro de um erro que fiquei procurando em varios arquivos até encontrá-lo:
<input type="text" value="<?=$nome_arq;?>" name="$nome_arq" size="10" maxvalue="30">
Na pressa, colei o nome da variavel em name com o $. Simples, mas os erros mais banais são os mais encardidos de achar.
<input type="text" value="<?=$nome_arq;?>" name="$nome_arq" size="10" maxvalue="30">
Na pressa, colei o nome da variavel em name com o $. Simples, mas os erros mais banais são os mais encardidos de achar.
26/10/2003 9:31am
(~21 anos atrás)
não tenho certeza!!