2014-04-28 9 views
6

ich eine Standard-Fang Ausnahme in Mule habe, und ich versuche, den Zugang zu der Ausnahmemeldung zu bekommen, einen Mule Ausdruck mit: # [Ausnahme]Mule: immer einen Halt der Ausnahmemeldung

Dieser doesn‘ t scheint zu funktionieren, und ich vermute, dass ich versuche, auf die falsche Variable zuzugreifen? Ich versuche es mit Logger zu protokollieren und auch eine eigene Komponente ausführen, die in einer Ausnahmemeldung erfolgt (als String.)

Danke,

+0

Können Sie den Fehler gemeinsam nutzen Nachricht von Protokollen –

+0

Nach einiger Zeit fand ich heraus, dass mein Problem wegen Verschachtelung # [] war, wo sie nicht verschachtelt sein sollten. Allerdings habe ich immer noch ein Problem, # [Ausnahme] wird den Mule Top-Fehler zurückgeben, was nicht wirklich interessant ist, was wirklich passiert ist. Ich bekomme gerade eine Komponente fehlgeschlagen, während der eigentliche Fehler, den ich ausgeben möchte, der Root-Fehler ist (Berechtigung verweigert bei einer Verzeichniserstellung von sftp.) Gibt es eine Möglichkeit, die Root-Fehlermeldung vom # [Ausnahme] -Objekt zu erhalten? –

+1

# [exception.getCause()] bekommt mich tatsächlich, was ich will –

Antwort

5

Sie können #[exception.causedBy] tun wie

<choice-exception-strategy> 
     <catch-exception-strategy when="exception.causedBy(com.company.BusinessException)"> <!-- [1] --> 
      <jms:outbound-endpoint queue="dead.letter"> 
       <jms:transaction action="ALWAYS_JOIN" /> 
      </jms:outbound-endpoint> 
     </catch-exception-strategy> 
     <rollback-exception-strategy when="exception.causedBy(com.company.NonBusinessException)"> <!-- [2] --> 
      <logger level="ERROR" message="Payload failing: #[payload]"/> 
     </rollback-exception-strategy> 
    </choice-exception-strategy> 

Mehr Details here

2

Hallo, wenn Sie die Ausnahmebedingungsnachricht mit MEL erhalten möchten, können Sie auch (in einer Catch-Ausnahmestrategie) den folgenden Ausdruck verwenden.

#[exception.cause.message] 
+1

das kann null Zeiger Ausnahme –

+0

ja du hast Recht, deine Lösung ist null Zeiger sicher;) – Nicolas

9

In einigen Fällen ist die exception.causenull sein könnte, geraten damit die bedingte zu verwenden, um die Nachricht anzuzeigen:

[(exception.cause!=null)?(exception.cause.message):exception] 

Diese Null-Zeiger Ausnahme zu verhindern.

8

beste Art und Weise Ausnahmemeldung (null safe) zu erhalten ist:

#[exception.cause.?message or exception.cause]

+0

danke .. es funktioniert perfekt .. – PankajChandankar

+1

Hi @ NIRMALTHINK BEYOND. Was ist das Fragezeichen in Ihrer Antwort? Was tut es? Vielen Dank! --- --- Bearbeiten Macht nichts! Ich habe die Antwort hier gefunden. https://docs.mulesoft.com/mule-user-guide/v/3.8/mule-expression-language-tips Dank! – Rashiki

+0

@Rashiki das Fragezeichen ist eine Prüfung für eine Nullzeigerausnahme. – granthbr

0

exception.cause null sein könnte, so es wie folgt behandelt werden:

#[exception.?cause.message or exception]