Вы должны абсолютно использовать последний способ, не потому, что он быстрее, а потому, что он более идиоматичен.Исключения следует использовать , а не для потока управления в ваших Java-программах.
это чисто анекдотично, но все микробенчмаркинг, который я когда-либо делал, показал, что использование исключений для потока управления не будеттакой же производительный, как условные, хотя, вероятно, это невозможно поддержать как обобщение, и JVM очень хорошо умеет оптимизировать подобные вещи, так что YMMV.