Avalados por :

Cómo capturar excepciones en un script de Groovy: solución al mensaje en rojo

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

Hola expertos,

No puedo capturar la excepción dentro de un script de groovy. Envuelvo todo el código en un bloque try-catch pero el mensaje aún falla (sobre en rojo en el monitoreo de mensajes). Después del bloque catch pongo "return message".

¿Alguna vez han experimentado eso? ¿Qué podría ser?

Gracias.

Cristian

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

4 Respuestas

0
Cargando...

Estimado Vijay Kumar Kapuganti,

He utilizado el bloque try-catch que mostraste, pero aún así no funciona. ¿Quizás se deba a que el script se está ejecutando dentro de un subproceso con un proceso estándar de excepción en él? ¿Podría el subproceso de excepción evitar que el bloque try-catch en el script funcione? Si no es así, tal vez sea solo un problema con el inquilino en el que estoy trabajando.

Saludos.

Cristian

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

¡Hola!

Parece que eso también está funcionando para mí. Por favor, revisa el script de muestra.



importar com.sap.gateway.ip.core.customdev.util.Mensaje;
importar java.util.HashMap;
def Mensaje procesarDatos(Mensaje mensaje) {
    def registroMensaje = messageLogFactory.getRegistroMensaje(mensaje);
    
    String entradaPrueba = "KRISHNA";
    String salida = prueba(entradaPrueba, mensaje);
    registroMensaje.setPropiedadCadena("DESDE_LLAMADA_METODO", salida)
    //Cuerpo 
    /*
        
       def cuerpo = mensaje.getCuerpo();
       def mapa = mensaje.getEncabezados();
       def cabecera = mapa.obtener("cabecera");
       
         registroMensaje.setPropiedadLarga("Registro#1", cabecera.longitud())
       
       intentar
       {
           si(cabecera.longitud() > 10)
           {
               mensaje.setEncabezado("ESTÁS_EN_LO_CIERTO" , cabecera);
               
               
           }
           sino
           lanzar nuevo RuntimeException("la longitud de la cabecera es menor que 10", e);
       }
       atrapar(Excepción e)
       {
           mensaje.setEncabezado("FALLA", "VERDADERO");
           
       }*/


       retornar mensaje;
}


público String prueba(String  entrada, Mensaje mensaje)
{
       def cabecera = entrada;
       def registroMensaje = messageLogFactory.getRegistroMensaje(mensaje);
         registroMensaje.setPropiedadLarga("Registro#1", cabecera.longitud<
        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Estimado Vijay Kumar Kapuganti,

Gracias por la respuesta. ¿Qué sucede si la excepción ocurre no en el script principal sino en una función llamada dentro del script principal? Incluso puse el bloque try-catch en esa función pero vi el mismo comportamiento. Mi excepción es un java.lang.NullPointerException y no puedo atraparla. Tal vez puedas darme una pista.

Gracias.

Cristian

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

Hola,

En CPI, el bloque try catch funciona bien, he observado que no hay problemas. Por favor, revisa el código a continuación.

Para ejecutar lo siguiente, crea una cabecera con el valor "try". Si asignas una longitud de "try" mayor a 10, MPL se completa. De lo contrario, falla según el bloque try catch.


        import com.sap.gateway.ip.core.customdev.util.Message;
        import java.util.HashMap;
        def Message processData(Message message) {
            //Cuerpo
            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("la longitud de 'head' es menor que 10", e);
            }
            catch(Exception e)
            {
                message.setHeader("FAILE", "TRUE");
            }

            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?