UNIVALI-LITE / Portugol-Studio

Ambiente de Programação didático para a linguagem Portugol 2.0
http://univali-lite.github.io/Portugol-Studio/
GNU Lesser General Public License v3.0
695 stars 222 forks source link

Erro numero 368d909ae2c193c9e32d1e6da9820bfb7ced9f97 v2.7.4 #855

Closed Mel-iza closed 4 years ago

Mel-iza commented 4 years ago

error_portugol br.univali.ps.nucleo.ExcecaoAplicacao: java.util.concurrent.ExecutionException: java.lang.NullPointerException at br.univali.ps.nucleo.TratadorExcecoes.transformarExcecao(TratadorExcecoes.java:267) at br.univali.ps.nucleo.TratadorExcecoes.exibirExcecao(TratadorExcecoes.java:42) at br.univali.ps.ui.abas.AbaCodigoFonte$AcaoExecucao.actionPerformed(AbaCodigoFonte.java:1105) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6539) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6304) at java.awt.Container.processEvent(Container.java:2239) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2297) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) at java.awt.Container.dispatchEventImpl(Container.java:2283) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at br.univali.ps.ui.abas.AbaCodigoFonte$AcaoExecucao.actionPerformed(AbaCodigoFonte.java:1096) ... 40 more Caused by: java.lang.NullPointerException at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.getBlocos(GeradorASA.java:341) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitSe(GeradorASA.java:681) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitSe(GeradorASA.java:31) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolParser$SeContext.accept(PortugolParser.java:1571) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolBaseVisitor.visitComando(PortugolBaseVisitor.java:139) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolParser$ComandoContext.accept(PortugolParser.java:1218) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.getBlocos(GeradorASA.java:325) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.getBlocos(GeradorASA.java:341) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitSe(GeradorASA.java:681) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitSe(GeradorASA.java:31) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolParser$SeContext.accept(PortugolParser.java:1571) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolBaseVisitor.visitComando(PortugolBaseVisitor.java:139) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolParser$ComandoContext.accept(PortugolParser.java:1218) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.getBlocos(GeradorASA.java:325) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitDeclaracaoFuncao(GeradorASA.java:187) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitDeclaracaoFuncao(GeradorASA.java:31) at br.univali.portugol.nucleo.analise.sintatica.antlr4.PortugolParser$DeclaracaoFuncaoContext.accept(PortugolParser.java:896) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA$Antlr4ParserVisitor.visitArquivo(GeradorASA.java:50) at br.univali.portugol.nucleo.analise.sintatica.GeradorASA.geraASA(GeradorASA.java:26) at br.univali.portugol.nucleo.analise.sintatica.AnalisadorSintatico.analisar(AnalisadorSintatico.java:155) at br.univali.portugol.nucleo.analise.AnalisadorAlgoritmo.analisar(AnalisadorAlgoritmo.java:57) at br.univali.portugol.nucleo.compilador.Compilador.compilar(Compilador.java:84) at br.univali.portugol.nucleo.Portugol.compilar(Portugol.java:29) at br.univali.portugol.nucleo.Portugol.compilarParaExecucao(Portugol.java:48) at br.univali.ps.ui.abas.AbaCodigoFonte.lambda$compilaProgramaParaExecucao$4(AbaCodigoFonte.java:1957) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

AdsonEsteves commented 4 years ago

@Mel-iza Qual código gerou esse erro?

Mel-iza commented 4 years ago

@Mel-iza Qual código gerou esse erro?

Esse aqui:

programa {

funcao inicio()
{
    real numero1, numero2, resultado
    cadeia operacao

    escreva("Entre com o número 1 - ")
    leia(numero1)

    escreva("Entre com o operador - ")
    leia(operacao)

    escreva("Entre com o número 2 - ")
    leia(numero2)

    se(operacao=="+")
    {
    resultado=numero1+numero2 
    escreva("O resultado  de ", numero1," ", operacao, " ", numero2, " é igual a  = ", resultado)
    }senao 
    se(operacao=="-")
        {
        resultado=numero1-numero2 
        escreva("O resultado  de ", numero1," ", operacao, " ", numero2, " é igual a  = ", resultado)
        }senao 
        se(operacao=="*")
            {
            resultado=numero1*numero2
            escreva("O resultado  de ", numero1," ", operacao, " ", numero2, " é igual a  = ", resultado)
            }senao 
            se(operacao=="/")
                {
                    resultado=numero1/numero2
                    escreva("O resultado  de ", numero1," ", operacao, " ", numero2, " é igual a  = ", resultado)
                } se (numero2==0)
                {
                escreva ("Por favor, entre com um número válido. O divisor não pode ser zero ")
                }senao 

     senao 
     se senao (operacao!= "+ - * /")
        {
        escreva(" Operador Inválido! ")
        escreva("\nPor favor entre com um dos seguintes operadores (+)(-)(*)(/)")
        }

Sou iniciante em programação e estou aprendendo a usar o Portugol :) Esse erro apareceu quando eu acrescentei o "senão" seguido por "se senão" na última parte do código.

AdsonEsteves commented 4 years ago

@Mel-iza Sim, não se usa o senao desta maneira. O certo é se (condição) { //codigo } senao { //codigo }

você pode olhar na aba inicial códigos com se e senao na parte de desvios condicionais

AdsonEsteves commented 4 years ago

Duplicate of #810

Mel-iza commented 4 years ago

Muito obrigada!