Earlier quoted context omitted.
Exceptions are only better than C style error return numbers but worse than pretty much every other model of error handling we have today.
Based on what exactly? I do think that e.g. rust’s error handling is quite okay with proper algebraic data types, but (checked) exceptions are similarly safe and ergonomic to use. The worst is without doubt the C style, whose legacy Go happily lengthens by doing the exact same thing, but natively in the language.
Whatever other benefits they might have are lost when every Java developer rethrows every checked exception as a more ergonomic RuntimeException.