«Выполнена стратегия исключения нескольких уловов» - PullRequest
0 голосов
/ 08 мая 2019

У меня есть стратегия выбора исключений, где у меня есть стратегия исключений с несколькими уловами, где я применяю условие на основе ошибки.

Ошибка 1:

org.mule.api.MessagingException: столбец подразделения_id не может быть нулевым (java.sql.SQLIntegrityConstraintViolationException).

Ошибка 2:

org.mule.api.MessagingException: org.mule.module.db.internal.domain.connection.ConnectionCreationException: Невозможно получить соединение для URL. Jdbc: mysql: // localhost: 3306 / mulesoft: доступ запрещен для пользователя 'root1212 '@' localhost '(используя пароль: YES) (java.sql.SQLException) (org.mule.module.db.internal.processor.DbConnectionException).

Как можно различить обе ошибки, используя выражение в стратегии исключения исключений?

Первый улов - выполняется, когда:

[исключение.causeMatches («org.mule.api.MessagingException: столбец отдела_id не может быть пустым *»)]

Второй улов - выполняется, когда:

[exception.causeMatches ("org.mule.api.MessagingException: org.mule.module.db.internal.domain.connection.ConnectionCreationException *")]

При использовании этого не в состоянии вызвать стратегию исключения ловли.

[exception.causeMatches ("org.mule.api.MessagingException *")]

Это работает, но для обеих ошибок получается одна и та же начальная строка. Как я могу дифференцировать оба?

1 Ответ

1 голос
/ 08 мая 2019

Если вы хотите перехватить определенные исключения, основанные на основной причине.Используйте метод connectedBy для исключения с полным именем исключения.В следующих примерах обрабатываются 2 определенных исключения, а затем - задание по умолчанию для всех других исключений.

 <choice-exception-strategy>
      <catch-exception-strategy when="#[exception.causedBy(com.ricston.CustomException)">
        <!-- do stuff -->
      </catch-exception-strategy>
      <catch-exception-strategy when="#[exception.causedBy(org.mule.module.db.internal.domain.connection.ConnectionCreationException)">
        <!-- do stuff -->
      </catch-exception-strategy>
      <catch-exception-strategy>
        <!-- other exceptions. do stuff -->
      </catch-exception-strategy>
    </choice-exception-strategy>
...