Elastic検索は、IndexAlreadyExists例外によって引き起こされるRemoteTransportExceptionをスローします。例外が特定の他の例外によって引き起こされたかどうかを判断する方法?
私はこの1つのケースを無視したいと思いますが、発生する可能性のある他の例外を確実にキャッチしてください。そのために
は、私は例外が別の例外によって引き起こされたかどうかを判断するための機能を実装:私はそうのように呼び出す
private def exceptionCausedBy[T](e: Throwable): Boolean = {
// scalastyle:off null
e.isInstanceOf[T] || (e.getCause != null && exceptionCausedBy[T](e.getCause))
}
:
:...
case e: Throwable if exceptionCausedBy[IndexAlreadyExistsException](e) =>
...
これは、しかし、警告を与えます
これは、タイプTがコンパイル時にわかっていて、消去されているためですコンパイラによって。
ClassTagを追加するだけで十分ですか?
def exceptionCausedBy[T: ClassTag](e: Throwable): Boolean = {
// scalastyle:off null
e.isInstanceOf[T] || (e.getCause != null && exceptionCausedBy[T](e.getCause))
}
IDEA Scratchfileでの私のテストはこれを確認しているようですが、私は専門家の意見を得たいと思います。
また、これはこれについて行くのは全く愚かな方法であれば、: T
が行うマッチング、
少なくともそれは論理的に聞こえる:) – ipoteka