Earlier quoted context omitted.
Food for thought: what are the expected consequences of the exception? If the error will stop the program flow and show a warning dialog to the user, it's useless to think too much about performance. More or less the same if it's going to log some message and abort the operation. What is usually frowned upon is using the exception as a kind of goto for normal flow of the program. Exceptions should be... the exception…
Exception is a way to return from a function abnormally. So yes, they are for exceptional conditions. IMO it's perfectly fine to use them for input validation. The Java standard library itself does it all the time.
That's not how idiomatic C++ is. Nor Rust. Nor Go.
One of Java's (incl standard library) main design flaws is overuse of exceptions.
It should not be emulated. It's too late to fix Java, but that doesn't make it a good idea.