Avalados por :

Como capturar exceções em um script Groovy: solução para a mensagem em vermelho

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

Olá especialistas,

Não consigo capturar a exceção dentro de um script groovy. Eu envolvo todo o código em um bloco try-catch, mas a mensagem ainda falha (aparece em vermelho no monitor de mensagens). Após o bloco catch, eu coloco "return message".

Já passaram por isso antes? O que poderia ser?

Obrigado.

Cristian

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Caro Vijay Kumar Kapuganti,

Usei o bloco try-catch que você mostrou, mas mesmo assim não está funcionando. Será que é porque o script está sendo executado dentro de um subprocesso com um processo padrão de exceção nele? O subprocesso de exceção poderia estar impedindo o bloco try-catch no script de funcionar? Se não for o caso, talvez seja apenas um problema com o inquilino em que estou trabalhando.

Atenciosamente.

Cristian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

°Olá!

Parece que isso também está funcionando para mim. Por favor, verifique o script de exemplo.



importar com.sap.gateway.ip.core.customdev.util.Mensagem;
importar java.util.HashMap;
def Mensagem processarDados(Mensagem mensagem) {
    def registroMensagem = messageLogFactory.getRegistroMensagem(mensagem);
    
    String entradaTeste = "KRISHNA";
    String saida = teste(entradaTeste, mensagem);
    registroMensagem.setPropriedadeCadeia("DE_CHAMADA_METODO", saida)
    //Corpo 
    /*
        
       def corpo = mensagem.getCorpo();
       def mapa = mensagem.getHeaders();
       def cabecalho = mapa.obter("cabecalho");
       
         registroMensagem.setPropriedadeLonga("Registro#1", cabecalho.comprimento())
       
       tentar
       {
           se(cabecalho.comprimento() > 10)
           {
               mensagem.setCabecalho("ESTÁS_NO_CERTO" , cabecalho);
               
               
           }
           senão
           lançar novo RuntimeException("o comprimento do cabeçalho é menor que 10", e);
       }
       pegar(Exceção e)
       {
           mensagem.setCabecalho("FALHA", "VERDADEIRO");
           
       }*/


       retornar mensagem;
}


público String teste(String  entrada, Mensagem mensagem)
{
       def cabecalho = entrada;
       def registroMensagem = messageLogFactory.getRegistroMensagem(mensagem);
         registroMensagem.setPropriedadeLonga("Registro#1", cabecalho.comprimento(
        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Caro Vijay Kumar Kapuganti,

Obrigado pela resposta. O que acontece se a exceção ocorrer não no script principal, mas em uma função chamada dentro do script principal? Mesmo que eu tenha colocado o bloco try-catch nessa função, observei o mesmo comportamento. Minha exceção é um java.lang.NullPointerException e não consigo capturá-la. Talvez você possa me dar uma dica.

Obrigado.

Cristian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

No CPI, o bloco try catch funciona bem, observei que não há problemas. Por favor, verifique o código abaixo.

Para executar o seguinte, crie um cabeçalho com o valor "try". Se você atribuir um comprimento "try" maior que 10, o MPL é preenchido. Caso contrário, falha de acordo com o bloco try catch.


        import com.sap.gateway.ip.core.customdev.util.Message;
        import java.util.HashMap;
        def Message processData(Message message) {
            //Corpo
            def messageLog = messageLogFactory.getMessageLog(message);
            def body = message.getBody();
            def map = message.getHeaders();
            def head = map.get("head");

            messageLog.setLongProperty("Logging#1", head.length())

            try
            {
                if(head.length() > 10)
                {
                    message.setHeader("YOU_ARE_RIGHT" , head);
                }
                else
                throw new RuntimeException("o comprimento de 'head' é menor que 10", e);
            }
            catch(Exception e)
            {
                message.setHeader("FALHA", "VERDADEIRO");
            }

            return message;
        }

        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?