Having the ability to throw an exception is great when you want to pass quickly back through lots of layers. Languages like Go make it so painful to get unique key violation in DB layer, to pass it to few layers of business logic, only to return error code to user.
For all other cases, languages that support algebraic data types (Scala/Kotlin) are great.