Forums » RGSS

Desvendando as janelas de erro em RGSS

    • 683 posts
    4 de junho de 2015 13h15min21s ART

    DESVENDANDO AS JANELAS DE ERRO EM RGSS

    Por Alex Crosslight

     

    Imagem Postada

     

    Citar

     

    Imagem Postada

    Scripts RGSS, Resources, Tutorials and Translations by Alexander Ernest Crosslight is licensed under a
    Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil License.
    Permissions beyond the scope of this license may be available at Atelier Cross

     

     

    Este tutorial é exclusivo do Atelier Cross, sites parceiros e afiliados. Sua disponibilização sem meu consentimento é expressamente proibida.

     

    INTRODUÇÃO

     

    Citar

    Comumente ao criar ou testar um script, quando ocorre um erro, nos deparamos com as famosas janelas que mostram algo que os iniciantes não entendem bolhunfas alguma e automaticamente fecham o projeto em teste ou jogo em execução. Geralmente, elas alertam erros mais simples ou mais graves dependendo do que ocorreu na leitura do script em questão.

    O objetivo desse guia é desvendar essas janelas e analisar o que cada mensagem de erro nos trás informando o erro em um certo script.


     

    ESTRUTURA DA JANELA DE ERRO

     

    Imagem Postada


    Em Azul, informa qual script gerou o erro apresentado, no caso acima, o script foi o Scene_Menu.

    Em vermelho, mostra a linha que ocorreu o problema, no caso acima, a linha 16

    Em amarelo escuro, mostra o tipo do erro, o que analisaremos logo a seguir, e no caso acima, o tipo do erro foi um “NameError”

    Em amarelo claro, temos uma descrição do erro, mostrando como ocorreu o erro e por que.

     

    OS MELIANTES


    A partir de agora, iremos analisar detalhadamente cada tipo de erro possível de ser gerado na hora do test-drive em um script, ainda pegando o exemplo acima, vamos ver qual tipo de erro nos foi apresentado:

    Imagem Postada


    “NameError” é o tipo de erro ligado principalmente a falta de definição de termos em um script, geralmente quando o interpretador chega em um termo e não sabe o que ele faz ou a o que ele está ligado, no caso acima, o termo “menu_index” não foi declarado ou interligado a um valor, e por isso deu erro no script Scene_Menu.

    Imagem Postada


    O tipo de erro “ArgumentError” estará ligado a declaração incorreta da quantidade de argumentos para um método, no caso acima, o método da linha 36 necessita de 2 argumentos, e para ele foi declarado apenas 1.

    Resolver isso também é prático, basta apenas concertar o numero de argumentos entre parênteses, sempre lembrando que os argumentos são separados por virgula. Para saber o numero correto de argumentos, ao analisar a segunda linha da janela de erro e atentar-se a esse trecho: X for Y, o numero de argumentos certos será X, e o que foi declarado é Y.

    Imagem Postada


    O Tipo de erro ‘SyntaxError’ é ligado a erros de sintaxe, muitas vezes cometidos por pequenos erros de digitação no script, resolver é simples, bastas ir na linha onde aponta o erro e ver o que você digitou errado.

    Imagem Postada


    Assim como o “NameError”, erros do tipo “NoMethodError” também podem estar ligados na maioria das vezes com falta de declarações ou especificações, só que ele é um erro mais fechado para métodos, no exemplo acima, o método luko_felapota não foi devidamente declarado na classe Game_Map, e quando ela foi usada e a mesma recebeu o método, gerou esse erro.

    Imagem Postada


    ‘Typeerror” é o tipo de erro que convenientemente são operações feitas com objetos de tipos indevidos, ou seja, você tentar somar um objeto do tipo String “texto” com um objeto do tipo Integer (Numero inteiro) por exemplo.

     

    CONSIDERAÇÕES


    Este tutorial é bem antiguinho, então ficaria agradecido se você caro leitor me reportasse algum ensinamento errôneo ou coisa do gênero, não deixem de mandar sugestões e dicas para próximas aulas.

     

    EXERCICIO


    Sem testar o script abaixo, identifique 3 erros que podem ocorrer, mostrando o numero da linha do erro, o tipo do erro e o porque.

    classAkimenerus<Window_Base   def initialize     super(0,0,600)     self.contents =Bitmap.new(width -32,height -32)     update   end   def update     refresh   end   def refresh     self.contents.clear     actor = $game_party.actors[0     draw_actor_face(actor,0,0)   endend  


     

    AGRADECIMENTOS

     

    Citar

    > Rafidelis pelo toque de colocar exercícios ao final de tutoriais.
    > Desenvolvido por Alex Crosslight.