Exceptions opt out of the type system. The problem with them is the same problem as null. Hereβs a video of the creator of null explaining: https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare/
Null and errors are just values at the end of the day, and should be treated as such. Doing so means your code is far easier to reason about.
Rust takes this approach and is one of the many reasons people love it so much.