| Opções de usuário |
100%
0%
(1 voto)
|
|
Obrigado por avaliar essa resposta.
|
Erros
são inevitáveis. Sempre, a falta de tempo que ronda os programadores,
está relacionada não com a geração de códigos em si, mas com a
eliminação de erros no código (debuging); uma longa e árdua tarefa. Não
pense em erros como problemas, mas como oportunidades de melhorar seu
código para certificar a funcionalidade do projeto final.
Esse
artigo examina 4 tipos de erros na Internet, como reconhecê-los e,
finalmente, como concertá-los rapidamente. Depois, eu dou uma olhada em
erros do PHP em específico, incluindo como eles ocorrem.
Os 4 tipos de erros mais 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. Erros 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.
Erros Específicos do PHP
As
mensagens de erro do PHP, na maior parte dos casos, são bastante
amigáveis. Vamos dar uma olhada em algumas e qual código as produziu.
Código:
includ("arquivo.txt");
Erro:
Fatal
error: Call to undefined function: includ() in c:\program files\apache
group\apache\htdocs\testserver\operator.php on line 21
Comentário:
Assumindo
que includ() seja uma função indefinida, um erro semântico ocorre e a
execução pára. Como você pode ver, o PHP mostra o erro e alguns
detalhes (função indefinida), além de fornecer a linha onde ocorreu o
erro.
Código:
$i = 1
echo $i;
Erro:
Parse error: parse error in c:\apache htdocs\teste\operadores.php on line 13
Comentário:
Usando
o erro de sintaxe acima, o compilador sem dúvida irá achar a falta do
ponto-e-vírgula na primeira linha do código. Contudo o erro não diz
especificamente “Está faltando um ponto-e-vírgula”, um parse error diz
ao programador que ocorreu um erro de sintaxe. Isso permite ao
programador afiar sua habilidade de ‘debugar’ um tipo de erro
específico.
Devemos
lembrar que se o parse error for erro de sintaxe, nada será executado
no script. Uma vez adicionado o ponto-e-vírgula à primeira linha do
código, o script funcionará com sucesso.
Código:
// $j nem foi declarado ainda…
echo $j;
Erro:
Warning: Undefined variable: j in c:\apache htdocs\teste\operadores.php on line 12
Comentário:
Como
você pode ver, isso é um aviso, não um erro (neste caso, a mensagem de
atenção – warning – também é conhecida como nota - notice). Warnings
ocorrem quando o PHP determina que alguma coisa está errada com o
script, mas não é grave o suficiente para parar a sua execução.
É
essencial entender que warnings não param a execução de um script.
Quando um warning é encontrado, uma mensagem será exibida junto da
saída do script, onde a linha do código contiver o problema. O PHP
continuará a executar o restante do código até o fim.
Por exemplo, o código seguinte:
$i = 1;
echo $x;
echo $i;
Produzirá essa saída:
Warning: Undefined variable: x in c:\apache htdocs\teste\operadores.php on line 21
1
Artigo original em http://phpbrasil.com/articles/article.php/pagerRow/1/id/509
|