If you ask yourself what the meaning of the word 'exception' is and then consider how many failures are exceptional, then one quickly realises that exceptions are the worst thing you could use to represent expected failure conditions.
The only time we should throw (or even pass around) exceptions is if there isn't a slot in the co-domain to inject a value in to.
The dangers and pitfalls of exceptions are completely irrelevant if all you're doing is using an exception as a value and not for control flow.
I think OP means using Result<T> where Right in the Either is always implied to be Exception, much like Fin<A> in language-ext [0]
[0] https://louthy.github.io/language-ext/LanguageExt.Core/Monad...