как отловить причину исключения в scala? - PullRequest
0 голосов
/ 26 марта 2020

Я столкнулся с этой проблемой, когда пытался отловить neo4j ServiceUnavailabeException, который был внутри Spark Exception. Так что я не смог поймать Neo4j Exception напрямую. Вот мой код:

    try {
      val dataFrame = neo4jClient.cypher(
               "match (d:News) " +
               "return d.uid as newsUID"
      ).loadDataFrame

      Some(dataFrame)
    } catch {
      case e: SparkException => println(e.getCause)
    }

Результат println (e.getCause):

org.neo4j.driver.v1.exceptions.ServiceUnavailableException: Unable to connect to localhost:7683, ensure the database is running and that there is a working network connection to it

Вот мой вопрос, как я могу напрямую перехватить ServiceUnavailabeException? (Имеется в виду Как я могу получить причина ошибки напрямую?)

1 Ответ

0 голосов
/ 26 марта 2020

Нет 100% уверенного метода, но вы можете попробовать использовать

def unrollExceptionMessage(ex: Exception): String = {
   def go(child: Exception, parentMessage: String): String = Option(child) match {
     case None => parentMessage
     case Some(e) => go(e.getCause, e.getMessage)
   }

   go(ex.getCause, ex.getMessage)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...