The SeedLexer and possibly other related classes used by Ruta throw java.lang.Error instead of java.lang.Exception. This is usually only thrown by the JVM when it’s really impossible to continue the process, e.g. out of memory, linkage errors or fatal VM failures, and it therefore not meant to be caught under normal circumstances, so most runtime environment don't capture these. This can therefore cause the whole process to fail instead of just the document being processed.
It would therefore be preferable if these components throw a type of java.lang.Exception instead, so that the process can proceed with the next document without the need to hook into the runtime core and catch java.lang.Error. The errors are also not subclassed, so it's awkward to distinguish them by checking for the message string itself.